Giter Site home page Giter Site logo

canasta-dockercompose's Introduction

Canasta: Docker Compose stack repo template

This is the official template for a Docker Compose-based Canasta stack.

Download the contents of this repo to start using Canasta. For more information on setting this up, please see the setup documentation.

canasta-dockercompose's People

Contributors

amalpaul54111 avatar chl178 avatar cicalese avatar hexmode avatar jeffw16 avatar luxaritas avatar sanjay-thiyagarajan avatar silverhikari avatar vedmaka avatar yaronkoren avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

canasta-dockercompose's Issues

Image version pinning

Followup to the changes merged in #44 - is there a reason why the version was not changed to be pinned in the main docker-compose.yml? By defaulting to "latest", it is now possible to have a commit checked out that doesn't work because the rest of the configuration is not in sync with the image that gets run - either I have an old commit checked out and the container that gets loaded is newer than it should be, or I pin the container version in the override myself, pull, forget to update, and now the image is older than it should be.

LocalSettings.php and extensions are not loading

The LocalSettings.php file isn't linked/mounted as required.
The extensions are mounted as user-extensions and that is resulting in the following error:

Fatal error: Uncaught Exception: Unable to open file /var/www/mediawiki/w/extensions/ExtensionName/extension.json: filemtime(): stat failed for /var/www/mediawiki/w/extensions/ExtensionName/extension.json in /var/www/mediawiki/w/includes/registration/ExtensionRegistry.php:177
Stack trace:
#0 /var/www/mediawiki/w/includes/GlobalFunctions.php(51): ExtensionRegistry->queue()
#1 /mediawiki/config/LocalSettings.php(434): wfLoadExtension()
#2 /var/www/mediawiki/w/includes/Setup.php(143): require_once('/mediawiki/conf...')
#3 /var/www/mediawiki/w/includes/WebStart.php(89): require_once('/var/www/mediaw...')
#4 /var/www/mediawiki/w/index.php(44): require('/var/www/mediaw...')
#5 {main}
thrown in /var/www/mediawiki/w/includes/registration/ExtensionRegistry.php on line 177

  • Connection #0 to host localhost left intact

Add support for Docker Swarm

I've organized on my own repository the required files to configure a docker swarm stack.
https://github.com/gitmapd/Canasta-DockerSwarm

I have also a few questions related to it:

  • It needs to be added to Canasta-CLI for setting up the stack like it's docker-compose counterpart, so how?
  • This setup takes into account the person setting up has a domain and has access to it's DNS because it uses the API of the registrar for it's configuration. So again i ask what's your opinion at it.

Let me know thank you.

Incorrect mount point

The instance keeps crashing. Here's the log:

22-04-26T03:57:09.859446558Z + '[' -d /var/www/mediawiki/w/extensions ']'
2022-04-26T03:57:09.859549480Z + echo 'WARNING! /var/www/mediawiki/w/extensions is an incorrect mount point, please re-mount to /var/www/mediawiki/w/user-extensions'
2022-04-26T03:57:09.859560579Z + exit 1
2022-04-26T03:57:09.859579083Z WARNING! /var/www/mediawiki/w/extensions is an incorrect mount point, please re-mount to /var/www/mediawiki/w/user-extensions

I also noticed that the canasta image pulled is always latest. Shouldn't it be a specific version at least for a particular Canasta-DockerCompose release?

Cannot start service "varnish"

ERROR: for varnish  Cannot start service varnish: failed to create shim: OCI runtime create failed: container_linux.go:380: starting container process caused: process_linux.go:545: container init caused: rootfs_linux.go:75: mounting "/home/techwizzie/Open Source/Canasta/config/default.vcl" to rootfs at "/etc/varnish/default.vcl" caused: mount through procfd: not a directory: unknown: Are you trying to mount a directory onto a file (or vice-versa)? Check if the specified host path exists and is the expected type
ERROR: Encountered errors while bringing up the project.

Steps to reproduce:

  1. Clone the official canasta repo (https://github.com/CanastaWiki/Canasta)
  2. Create a docker compose file and copy the contents from here
  3. Run docker-compose up

Error in wiki installation wizard > Connect to database

Cannot access the database: :real_connect(): (HY000/2002): No such file or directory.
Check the host, username and password and try again. If using "localhost" as the database host, try using "127.0.0.1" instead (or vice versa).

switch from links to networks?

with links being a legacy feature of docker, i think it would be a good idea to switch from using links to using the networking feature now recommended by docker. along with doing this will remove a potential problem area as links could be removed in a newer version of docker, this would also allow for the podman engine to be used along with the main docker engine with docker-compose as at the moment podman will not run the current docker-compose file as podman does not have support for links.

Add skip-binary-as-hex setting for mysql

We had an issue with the mysql command-line client displaying all data as hexadecimal values in one Canasta-based wiki. We solved it by adding the following to the file /etc/my.cnf:

[client]
skip-binary-as-hex = true

[mysql]
skip-binary-as-hex = true

It would be great to add this setting by default within Canasta in some way, if that's possible, so that this kind of problem doesn't happen again for administrators.

Docker Compose is installed but not installed

To whom it may concern,

Docker is installed:
Client: Docker Engine - Community
Version: 23.0.0
API version: 1.42
Go version: go1.19.5
Git commit: e92dd87
Built: Wed Feb 1 17:43:17 2023
OS/Arch: linux/amd64
Context: default

Server: Docker Engine - Community
Engine:
Version: 23.0.0
API version: 1.42 (minimum version 1.12)
Go version: go1.19.5
Git commit: d7573ab
Built: Wed Feb 1 17:43:17 2023
OS/Arch: linux/amd64
Experimental: false
containerd:
Version: 1.6.16
GitCommit: 31aa4358a36870b21a992d3ad2bef29e1d693bec
runc:
Version: 1.1.4
GitCommit: v1.1.4-0-g5fd4c4d
docker-init:
Version: 0.19.0
GitCommit: de40ad0

And Docker Compose as well:
Docker Compose version v2.15.1

But running
curl -fsL https://raw.githubusercontent.com/CanastaWiki/Canasta-CLI/main/install.sh | bash

leads to the following result:
Downloading Canasta CLI latest release
canasta 100%[===================>] 4,60M 10,7MB/s in 0,4s
Installing Canasta CLI
Docker is already installed.
Docker Compose is not installed; please follow the guide at https://docs.docker.com/compose/install/ to install it.
Please make sure you have a working kubectl if you wish to use Kubernetes as an orchestrator.

Usage: sudo canasta [COMMAND] [ARGUMENTS...]

What can I do?

Thanks in advance for any answer.

Provide basic directions for rootless installation

Of course, I'm using podman, so these are podman and debian or ubuntu specific:

  1. Install podman-docker
  2. Run sudo sysctl net.ipv4.ip_unprivileged_port_start=80
  3. Add a file at /etc/sysctl.d/99-rootless-podman.conf containing net.ipv4.ip_unprivileged_port_start = 80 (for reboots).
  4. Run systemctl --user enable podman.socket + systemctl --user start podman.socket as non-root
  5. Set DOCKER_HOST envvar to unix:///run/user/``id -u``/podman/podman.sock

Another Canasta Repository?

Hi Team,

I just saw that there's a new repository. Can I find any documentation on the reason behind this change and the differences in between these two?

Also what would be the best practice approach to pull latest changes from this repository? Are we going to maintain some versioning? Would there be certain specific tags to get the stable version of this repository and the Canasta image in general?

Server deployment - proxy - label:documentation

Hi there,
I been testing locally the stack and so far so good.
Wondering how would i go into deploy this in a server that has nginx-proxy-manager running (docker)
I can deploy into a fresh server with domain and all. Just wondering what would be the course of action to deploy it on a fresh server for example. I noticed it forces HTTPS. Why not include certbot in the stack?

Also trying to look up QuickStatements implementation. Maybe i missed it on the documentation? Thanks!

Best Regards,
Daniel Preugschat

Add a volumed-in Docker Compose override file

Apologies if I'm not quite describing this correctly, but: it would be good for Canasta to provide a docker-compose.override.yml file which is a volume, i.e. actually stored in the host OS, so that the administrator can add their own directives.

HTTPS certificate verification failing

curl -v https://localhost

  • Trying 127.0.0.1:443...
  • TCP_NODELAY set
  • Connected to localhost (127.0.0.1) port 443 (#0)
  • ALPN, offering h2
  • ALPN, offering http/1.1
  • successfully set certificate verify locations:
  • CAfile: /etc/ssl/certs/ca-certificates.crt
    CApath: /etc/ssl/certs
  • TLSv1.3 (OUT), TLS handshake, Client hello (1):
  • TLSv1.3 (IN), TLS handshake, Server hello (2):
  • TLSv1.3 (IN), TLS handshake, Encrypted Extensions (8):
  • TLSv1.3 (IN), TLS handshake, Certificate (11):
  • TLSv1.3 (OUT), TLS alert, unknown CA (560):
  • SSL certificate problem: unable to get local issuer certificate
  • Closing connection 0
    curl: (60) SSL certificate problem: unable to get local issuer certificate
    More details here: https://curl.haxx.se/docs/sslcerts.html

curl failed to verify the legitimacy of the server and therefore could not
establish a secure connection to it. To learn more about this situation and
how to fix it, please visit the web page mentioned above.

Add Caddyfile support

Background: There are many legitimate uses of a Caddyfile for those who are using Caddy. Canasta-DockerCompose should offer support for custom Caddyfiles.

Task: Modify docker-compose.yml to add a mount to Caddyfile in config/.

Acceptance criteria:

  • There should be a default file in config/Caddyfile.
  • A user should be able to edit the default Caddyfile in config/.
  • There should be a mount point to config/Caddyfile in the caddy: section of docker-compose.yml

Wikibase composer dependencies are not being detected/installed

I'm trying to add the Wikibase extension to my canasta setup but I'm encountering some issues with how I should install it. Here is what I did:

  • I cloned this repo (latest version)
  • I cloned the tar of the Wikibase extension from here(Used the 1.39 version)
  • Extracted the content to the extensions folder
  • Since Wikibase requires additional dependencies, I added the following to config/composer.local.json file
{
  "require": {},
  "extra": {
    "merge-plugin": {
      "include": ["user-extensions/Wikibase/composer.json"]
    }
  }
}
  • I added the following to config/LocalSettings.php
wfLoadExtension( 'WikibaseClient', "$IP/extensions/Wikibase/extension-client.json" );
require_once "$IP/extensions/Wikibase/client/ExampleSettings.php";

$wgWBClientSettings['repoUrl'] = 'https://www.wikidata.org';
$wgWBClientSettings['repoScriptPath'] = '';
$wgWBClientSettings['repoArticlePath'] = '/wiki/$1';
$wgWBClientSettings['entitySources'] = [
    'wikidatawiki' => [
        'repoDatabase' => 'wikidatawiki',
        'baseUri' => 'https://www.wikidata.org/entity',
        'entityNamespaces' => [
            'item' => 0,     // The namespace for items on Wikidata
            'property' => 120, // The namespace for properties on Wikidata
        ],
        'rdfNodeNamespacePrefix' => 'wd',
        'rdfPredicateNamespacePrefix' => '',
        'interwikiPrefix' => '',
    ],
];
$wgWBClientSettings['itemAndPropertySourceName'] = 'wikidatawiki';
$wgWBClientSettings['siteLinkGroups'] = [ 'wikidata' ]; // Use the 'wikidata' site link group for Wikidata
$wgWBClientSettings['siteGlobalID'] = 'wikidata';
  • I start the canasta stack using docker compose up

Here is the error that I get:

MediaWiki internal error.

Original exception: [745e2a940c07da0c3967d007] /wiki/Main_Page Error: Class 'DataValues\Deserializers\DataValueDeserializer' not found
Backtrace:
from /var/www/mediawiki/w/user-extensions/Wikibase/client/WikibaseClient.ServiceWiring.php(266)
#0 /var/www/mediawiki/w/vendor/wikimedia/services/src/ServiceContainer.php(447): Wikimedia\Services\ServiceContainer->{closure}()
#1 /var/www/mediawiki/w/vendor/wikimedia/services/src/ServiceContainer.php(411): Wikimedia\Services\ServiceContainer->createService()
#2 /var/www/mediawiki/w/includes/MediaWikiServices.php(301): Wikimedia\Services\ServiceContainer->getService()
#3 /var/www/mediawiki/w/vendor/wikimedia/services/src/ServiceContainer.php(419): MediaWiki\MediaWikiServices->getService()
#4 /var/www/mediawiki/w/user-extensions/Wikibase/client/includes/WikibaseClient.php(356): Wikimedia\Services\ServiceContainer->get()
#5 /var/www/mediawiki/w/user-extensions/Wikibase/client/WikibaseClient.ServiceWiring.php(1066): Wikibase\Client\WikibaseClient::getDataValueDeserializer()
#6 /var/www/mediawiki/w/vendor/wikimedia/services/src/ServiceContainer.php(447): Wikimedia\Services\ServiceContainer->{closure}()
#7 /var/www/mediawiki/w/vendor/wikimedia/services/src/ServiceContainer.php(411): Wikimedia\Services\ServiceContainer->createService()
#8 /var/www/mediawiki/w/includes/MediaWikiServices.php(301): Wikimedia\Services\ServiceContainer->getService()
#9 /var/www/mediawiki/w/vendor/wikimedia/services/src/ServiceContainer.php(419): MediaWiki\MediaWikiServices->getService()
#10 /var/www/mediawiki/w/user-extensions/Wikibase/client/includes/WikibaseClient.php(150): Wikimedia\Services\ServiceContainer->get()
#11 /var/www/mediawiki/w/user-extensions/Wikibase/client/WikibaseClient.ServiceWiring.php(962): Wikibase\Client\WikibaseClient::getWikibaseServices()
#12 /var/www/mediawiki/w/vendor/wikimedia/services/src/ServiceContainer.php(447): Wikimedia\Services\ServiceContainer->{closure}()
#13 /var/www/mediawiki/w/vendor/wikimedia/services/src/ServiceContainer.php(411): Wikimedia\Services\ServiceContainer->createService()
#14 /var/www/mediawiki/w/includes/MediaWikiServices.php(301): Wikimedia\Services\ServiceContainer->getService()
#15 /var/www/mediawiki/w/vendor/wikimedia/services/src/ServiceContainer.php(419): MediaWiki\MediaWikiServices->getService()
#16 /var/www/mediawiki/w/user-extensions/Wikibase/client/includes/WikibaseClient.php(217): Wikimedia\Services\ServiceContainer->get()
#17 /var/www/mediawiki/w/user-extensions/Wikibase/client/WikibaseClient.ServiceWiring.php(403): Wikibase\Client\WikibaseClient::getStore()
#18 /var/www/mediawiki/w/vendor/wikimedia/services/src/ServiceContainer.php(447): Wikimedia\Services\ServiceContainer->{closure}()
#19 /var/www/mediawiki/w/vendor/wikimedia/services/src/ServiceContainer.php(411): Wikimedia\Services\ServiceContainer->createService()
#20 /var/www/mediawiki/w/includes/MediaWikiServices.php(301): Wikimedia\Services\ServiceContainer->getService()
#21 /var/www/mediawiki/w/vendor/wikimedia/services/src/ServiceContainer.php(419): MediaWiki\MediaWikiServices->getService()
#22 /var/www/mediawiki/w/user-extensions/Wikibase/client/includes/WikibaseClient.php(160): Wikimedia\Services\ServiceContainer->get()
#23 /var/www/mediawiki/w/user-extensions/Wikibase/client/WikibaseClient.ServiceWiring.php(851): Wikibase\Client\WikibaseClient::getEntityLookup()
#24 /var/www/mediawiki/w/vendor/wikimedia/services/src/ServiceContainer.php(447): Wikimedia\Services\ServiceContainer->{closure}()
#25 /var/www/mediawiki/w/vendor/wikimedia/services/src/ServiceContainer.php(411): Wikimedia\Services\ServiceContainer->createService()
#26 /var/www/mediawiki/w/includes/MediaWikiServices.php(301): Wikimedia\Services\ServiceContainer->getService()
#27 /var/www/mediawiki/w/vendor/wikimedia/services/src/ServiceContainer.php(419): MediaWiki\MediaWikiServices->getService()
#28 /var/www/mediawiki/w/vendor/wikimedia/object-factory/src/ObjectFactory.php(211): Wikimedia\Services\ServiceContainer->get()
#29 /var/www/mediawiki/w/vendor/wikimedia/object-factory/src/ObjectFactory.php(152): Wikimedia\ObjectFactory\ObjectFactory::getObjectFromSpec()
#30 /var/www/mediawiki/w/includes/HookContainer/HookContainer.php(473): Wikimedia\ObjectFactory\ObjectFactory->createObject()
#31 /var/www/mediawiki/w/includes/HookContainer/HookContainer.php(156): MediaWiki\HookContainer\HookContainer->getHandlers()
#32 /var/www/mediawiki/w/includes/HookContainer/HookRunner.php(2893): MediaWiki\HookContainer\HookContainer->run()
#33 /var/www/mediawiki/w/includes/parser/Parser.php(661): MediaWiki\HookContainer\HookRunner->onParserClearState()
#34 /var/www/mediawiki/w/includes/parser/Parser.php(4901): Parser->clearState()
#35 /var/www/mediawiki/w/includes/parser/Parser.php(957): Parser->startParse()
#36 /var/www/mediawiki/w/includes/parser/Parser.php(4928): Parser->preprocess()
#37 /var/www/mediawiki/w/includes/language/MessageCache.php(1308): Parser->transformMsg()
#38 /var/www/mediawiki/w/includes/language/Message.php(1456): MessageCache->transform()
#39 /var/www/mediawiki/w/includes/language/Message.php(1009): Message->transformText()
#40 /var/www/mediawiki/w/includes/language/Message.php(1053): Message->format()
#41 /var/www/mediawiki/w/includes/OutputPage.php(1048): Message->text()
#42 /var/www/mediawiki/w/includes/OutputPage.php(1097): OutputPage->setHTMLTitle()
#43 /var/www/mediawiki/w/includes/page/Article.php(474): OutputPage->setPageTitle()
#44 /var/www/mediawiki/w/includes/actions/ViewAction.php(78): Article->view()
#45 /var/www/mediawiki/w/includes/MediaWiki.php(542): ViewAction->show()
#46 /var/www/mediawiki/w/includes/MediaWiki.php(322): MediaWiki->performAction()
#47 /var/www/mediawiki/w/includes/MediaWiki.php(904): MediaWiki->performRequest()
#48 /var/www/mediawiki/w/includes/MediaWiki.php(562): MediaWiki->main()
#49 /var/www/mediawiki/w/index.php(50): MediaWiki->run()
#50 /var/www/mediawiki/w/index.php(46): wfIndexMain()
#51 {main}

Exception caught inside exception handler: [745e2a940c07da0c3967d007] /wiki/Main_Page Error: Class 'DataValues\Deserializers\DataValueDeserializer' not found
Backtrace:
from /var/www/mediawiki/w/user-extensions/Wikibase/client/WikibaseClient.ServiceWiring.php(266)
#0 /var/www/mediawiki/w/vendor/wikimedia/services/src/ServiceContainer.php(447): Wikimedia\Services\ServiceContainer->{closure}()
#1 /var/www/mediawiki/w/vendor/wikimedia/services/src/ServiceContainer.php(411): Wikimedia\Services\ServiceContainer->createService()
#2 /var/www/mediawiki/w/includes/MediaWikiServices.php(301): Wikimedia\Services\ServiceContainer->getService()
#3 /var/www/mediawiki/w/vendor/wikimedia/services/src/ServiceContainer.php(419): MediaWiki\MediaWikiServices->getService()
#4 /var/www/mediawiki/w/user-extensions/Wikibase/client/includes/WikibaseClient.php(356): Wikimedia\Services\ServiceContainer->get()
#5 /var/www/mediawiki/w/user-extensions/Wikibase/client/WikibaseClient.ServiceWiring.php(1066): Wikibase\Client\WikibaseClient::getDataValueDeserializer()
#6 /var/www/mediawiki/w/vendor/wikimedia/services/src/ServiceContainer.php(447): Wikimedia\Services\ServiceContainer->{closure}()
#7 /var/www/mediawiki/w/vendor/wikimedia/services/src/ServiceContainer.php(411): Wikimedia\Services\ServiceContainer->createService()
#8 /var/www/mediawiki/w/includes/MediaWikiServices.php(301): Wikimedia\Services\ServiceContainer->getService()
#9 /var/www/mediawiki/w/vendor/wikimedia/services/src/ServiceContainer.php(419): MediaWiki\MediaWikiServices->getService()
#10 /var/www/mediawiki/w/user-extensions/Wikibase/client/includes/WikibaseClient.php(150): Wikimedia\Services\ServiceContainer->get()
#11 /var/www/mediawiki/w/user-extensions/Wikibase/client/WikibaseClient.ServiceWiring.php(962): Wikibase\Client\WikibaseClient::getWikibaseServices()
#12 /var/www/mediawiki/w/vendor/wikimedia/services/src/ServiceContainer.php(447): Wikimedia\Services\ServiceContainer->{closure}()
#13 /var/www/mediawiki/w/vendor/wikimedia/services/src/ServiceContainer.php(411): Wikimedia\Services\ServiceContainer->createService()
#14 /var/www/mediawiki/w/includes/MediaWikiServices.php(301): Wikimedia\Services\ServiceContainer->getService()
#15 /var/www/mediawiki/w/vendor/wikimedia/services/src/ServiceContainer.php(419): MediaWiki\MediaWikiServices->getService()
#16 /var/www/mediawiki/w/user-extensions/Wikibase/client/includes/WikibaseClient.php(217): Wikimedia\Services\ServiceContainer->get()
#17 /var/www/mediawiki/w/user-extensions/Wikibase/client/WikibaseClient.ServiceWiring.php(420): Wikibase\Client\WikibaseClient::getStore()
#18 /var/www/mediawiki/w/vendor/wikimedia/services/src/ServiceContainer.php(447): Wikimedia\Services\ServiceContainer->{closure}()
#19 /var/www/mediawiki/w/vendor/wikimedia/services/src/ServiceContainer.php(411): Wikimedia\Services\ServiceContainer->createService()
#20 /var/www/mediawiki/w/includes/MediaWikiServices.php(301): Wikimedia\Services\ServiceContainer->getService()
#21 /var/www/mediawiki/w/vendor/wikimedia/services/src/ServiceContainer.php(419): MediaWiki\MediaWikiServices->getService()
#22 /var/www/mediawiki/w/user-extensions/Wikibase/client/includes/WikibaseClient.php(165): Wikimedia\Services\ServiceContainer->get()
#23 /var/www/mediawiki/w/user-extensions/Wikibase/client/WikibaseClient.ServiceWiring.php(800): Wikibase\Client\WikibaseClient::getEntityRevisionLookup()
#24 /var/www/mediawiki/w/vendor/wikimedia/services/src/ServiceContainer.php(447): Wikimedia\Services\ServiceContainer->{closure}()
#25 /var/www/mediawiki/w/vendor/wikimedia/services/src/ServiceContainer.php(411): Wikimedia\Services\ServiceContainer->createService()
#26 /var/www/mediawiki/w/includes/MediaWikiServices.php(301): Wikimedia\Services\ServiceContainer->getService()
#27 /var/www/mediawiki/w/vendor/wikimedia/services/src/ServiceContainer.php(419): MediaWiki\MediaWikiServices->getService()
#28 /var/www/mediawiki/w/user-extensions/Wikibase/client/includes/WikibaseClient.php(540): Wikimedia\Services\ServiceContainer->get()
#29 /var/www/mediawiki/w/user-extensions/Wikibase/client/WikibaseClient.ServiceWiring.php(495): Wikibase\Client\WikibaseClient::getRedirectResolvingLatestRevisionLookup()
#30 /var/www/mediawiki/w/vendor/wikimedia/services/src/ServiceContainer.php(447): Wikimedia\Services\ServiceContainer->{closure}()
#31 /var/www/mediawiki/w/vendor/wikimedia/services/src/ServiceContainer.php(411): Wikimedia\Services\ServiceContainer->createService()
#32 /var/www/mediawiki/w/includes/MediaWikiServices.php(301): Wikimedia\Services\ServiceContainer->getService()
#33 /var/www/mediawiki/w/vendor/wikimedia/services/src/ServiceContainer.php(419): MediaWiki\MediaWikiServices->getService()
#34 /var/www/mediawiki/w/user-extensions/Wikibase/client/includes/WikibaseClient.php(547): Wikimedia\Services\ServiceContainer->get()
#35 /var/www/mediawiki/w/user-extensions/Wikibase/client/WikibaseClient.ServiceWiring.php(866): Wikibase\Client\WikibaseClient::getFallbackLabelDescriptionLookupFactory()
#36 /var/www/mediawiki/w/vendor/wikimedia/services/src/ServiceContainer.php(447): Wikimedia\Services\ServiceContainer->{closure}()
#37 /var/www/mediawiki/w/vendor/wikimedia/services/src/ServiceContainer.php(411): Wikimedia\Services\ServiceContainer->createService()
#38 /var/www/mediawiki/w/includes/MediaWikiServices.php(301): Wikimedia\Services\ServiceContainer->getService()
#39 /var/www/mediawiki/w/vendor/wikimedia/services/src/ServiceContainer.php(419): MediaWiki\MediaWikiServices->getService()
#40 /var/www/mediawiki/w/user-extensions/Wikibase/client/includes/WikibaseClient.php(321): Wikimedia\Services\ServiceContainer->get()
#41 /var/www/mediawiki/w/user-extensions/Wikibase/client/WikibaseClient.ServiceWiring.php(606): Wikibase\Client\WikibaseClient::getSidebarLinkBadgeDisplay()
#42 /var/www/mediawiki/w/vendor/wikimedia/services/src/ServiceContainer.php(447): Wikimedia\Services\ServiceContainer->{closure}()
#43 /var/www/mediawiki/w/vendor/wikimedia/services/src/ServiceContainer.php(411): Wikimedia\Services\ServiceContainer->createService()
#44 /var/www/mediawiki/w/includes/MediaWikiServices.php(301): Wikimedia\Services\ServiceContainer->getService()
#45 /var/www/mediawiki/w/vendor/wikimedia/services/src/ServiceContainer.php(419): MediaWiki\MediaWikiServices->getService()
#46 /var/www/mediawiki/w/vendor/wikimedia/object-factory/src/ObjectFactory.php(211): Wikimedia\Services\ServiceContainer->get()
#47 /var/www/mediawiki/w/vendor/wikimedia/object-factory/src/ObjectFactory.php(152): Wikimedia\ObjectFactory\ObjectFactory::getObjectFromSpec()
#48 /var/www/mediawiki/w/includes/HookContainer/HookContainer.php(473): Wikimedia\ObjectFactory\ObjectFactory->createObject()
#49 /var/www/mediawiki/w/includes/HookContainer/HookContainer.php(156): MediaWiki\HookContainer\HookContainer->getHandlers()
#50 /var/www/mediawiki/w/includes/HookContainer/HookRunner.php(3414): MediaWiki\HookContainer\HookContainer->run()
#51 /var/www/mediawiki/w/includes/skins/Skin.php(1535): MediaWiki\HookContainer\HookRunner->onSidebarBeforeOutput()
#52 /var/www/mediawiki/w/includes/skins/SkinTemplate.php(792): Skin->buildSidebar()
#53 /var/www/mediawiki/w/includes/skins/SkinTemplate.php(229): SkinTemplate->getPortletsTemplateData()
#54 /var/www/mediawiki/w/includes/skins/SkinMustache.php(88): SkinTemplate->getTemplateData()
#55 /var/www/mediawiki/w/canasta-skins/Vector/includes/SkinVector.php(450): SkinMustache->getTemplateData()
#56 /var/www/mediawiki/w/includes/skins/SkinMustache.php(58): MediaWiki\Skins\Vector\SkinVector->getTemplateData()
#57 /var/www/mediawiki/w/includes/skins/SkinTemplate.php(177): SkinMustache->generateHTML()
#58 /var/www/mediawiki/w/includes/OutputPage.php(2874): SkinTemplate->outputPage()
#59 /var/www/mediawiki/w/includes/exception/MWExceptionRenderer.php(183): OutputPage->output()
#60 /var/www/mediawiki/w/includes/exception/MWExceptionRenderer.php(102): MWExceptionRenderer::reportHTML()
#61 /var/www/mediawiki/w/includes/exception/MWExceptionHandler.php(131): MWExceptionRenderer::output()
#62 /var/www/mediawiki/w/includes/exception/MWExceptionHandler.php(248): MWExceptionHandler::report()
#63 /var/www/mediawiki/w/includes/MediaWiki.php(584): MWExceptionHandler::handleException()
#64 /var/www/mediawiki/w/index.php(50): MediaWiki->run()
#65 /var/www/mediawiki/w/index.php(46): wfIndexMain()
#66 {main}

It's clear that data-values dependency is missing, but it should have been installed since it's present in the composer.json of Wikibase as mentioned here

I saw there was a recent change with #48 regarding the proper way to installing extensions, so I'm not sure if it's related or not to the problem.

Provide context on the stack components and deployment scenarios

Canasta uses Caddy and Varnish, but the documentation doesn't offer context on how these are used in the overall platform architecture. I.e. Caddy is simultaneously the reverse proxying web server and TLS termination endpoint. Varnish is an external cache layer for performance.

Also, Caddy provides a major feature not found in other web servers: automatic TLS support through ACME CA such as Let's Encrypt or ZeroSSL but that is not mentioned as a "feature" of Canasta. Since users will undoubtedly be trying to figure out how to use and deploy the Canasta stack in 3 different scenarios (listed below), the documentation should address these at a minimal level of detail for proper orientation.

  1. local development (with the site served at "localhost") for "kicking the tires" or development of Canasta features;
  2. corporate/cloud "split brain" or "split horizon" DNS environments. For example a private Amazon EC2 instance with perhaps DNS provided by Amazon Route 53 and a VPC that allows "internal (enterprise) users" to "see" the private DNS name of the instance; or else some other combination of "company DNS service provider"; and
  3. public deployments with a predetermined domain name. For example, "I've got a domain name and a host at Digital Ocean, I want to setup Canasta."

This issue aims to create some minimal guidance on how Canasta meets these use cases. The info would likely be best in some "preamble/setup" section; introductory text; and/or FAQ to provide the correct guidance for the new user.

From the Caddy docs

Local HTTPS is handled via incorporation of a self-signed certificate into the local PKI settings of the host machine.

I don't think Canasta has any problems with 'localhost' setup, when run via sudo and using the Docker Compose orchestrator because the necessary PKI configuration is stored via the Docker daemon into the Caddy container and persistent data directory.

For public domain names, Caddy guides you to ensure the following before running Caddy:

  • your domain's A/AAAA records point to your server,
  • ports 80 and 443 are open externally,
  • Caddy can bind to those ports (or those ports are forwarded to Caddy),
  • your data directory is writeable and persistent,
  • and your domain name appears somewhere relevant in the config

Canasta handles all but the first step (set your DNS), so Canasta users can easily get their instance running on a public domain name via a DNS A/AAAA record (for IPv4 and IPv6 respectively).

Open Questions

An open question is "How do I setup Canasta to use my already obtained CA Certificate?" For example, somebody purchased an SSL certificate from GoDaddy or Verisign, or whatever.

Additional concerns

Since Let's Encrypt is a default CA for Caddy, and LE has rate limits, we should caution users or provide a mechanism to avoid hitting those limits which can block your HTTPS for up to a week.

Problem with my.cnf client variable when using mysqldump

when running mysqldump to back up the mysql database of the wiki(if there is a better way of doing this for canasta, i would be intrigued to know), i noticed when running it in verbose mode there was a error "mysqldump: [ERROR] unknown variable 'skip-binary-as-hex=true'" being thrown when trying to output the backup. after doing some research(and looking over the problem for the origin of the my.cnf variables) found out this is caused by the variables in the client field being used for all client programs and not just the mysql cli. i believe that the mysql field in the my.cnf is all that should be needed to fix the binary problem described in #21

Switch to using MariaDB

The Wikimedia Foundation uses MariaDB these days rather than MySQL. I think we should stick to their setup as close as possible. Maybe we could switch to using the MariaDB Docker image rather than MySQL.

@vedmaka, would there be any issues associated with switching to MariaDB from MySQL?

Support using docker-compose.override.yml

It is a bad idea for users to clobber docker-compose.yml with their own customizations. Making a docker-compose.override.yml would let people edit things without compromising the Canasta Project's ability to make improvements to the Docker Compose stack for all.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.