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.
Docker Compose stack template for Canasta
License: MIT License
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.
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.
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
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:
Let me know thank you.
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?
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:
docker-compose up
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).
There are several log files: Apache2, php-fpm, and jobs queue runner. They are needed to investigate outages or when something goes wrong. So, we should keep them on the server side (outside the docker containers). Let's add the related volumes to the web container
CirrusSearch for 1.39 now requires ES 7.10.2
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.
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.
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.
Of course, I'm using podman, so these are podman and debian or ubuntu specific:
sudo sysctl net.ipv4.ip_unprivileged_port_start=80
/etc/sysctl.d/99-rootless-podman.conf
containing net.ipv4.ip_unprivileged_port_start = 80
(for reboots).systemctl --user enable podman.socket
+ systemctl --user start podman.socket
as non-rootDOCKER_HOST
envvar to unix:///run/user/``id -u``/podman/podman.sock
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?
Also i don't know if you guys think its a good idea...but i like apache to be reloaded when a file changes without restarting the container. So I will share a gist here:
https://gist.github.com/gitmapd/54052b3cbe0c7b8489541c83b335d814
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
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.
curl -v https://localhost
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.
Background: There are many legitimate uses of a Caddyfile
for those who are using Caddy. Canasta-DockerCompose should offer support for custom Caddyfile
s.
Task: Modify docker-compose.yml
to add a mount to Caddyfile
in config/
.
Acceptance criteria:
config/Caddyfile
.Caddyfile
in config/
.config/Caddyfile
in the caddy:
section of docker-compose.yml
Images from docker.io/library as the path name. This will allow canasta to work more easily with other container managers like podman.
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:
extensions
folderconfig/composer.local.json
file{
"require": {},
"extra": {
"merge-plugin": {
"include": ["user-extensions/Wikibase/composer.json"]
}
}
}
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';
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.
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.
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.
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:
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).
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.
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.
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
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?
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.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.