Security support on Alpine 3.18 ended on 09 May 2025.
Moving to 3.19 gives us new updates until Nov 2025 while keeping PHP 8.1
Signed-off-by: Kevin Decherf <kevin@kdecherf.com>
- Move the healthcheck from the docker-compose example to the actual image. That makes sure all user of the image automatically get the healthcheck.
- Change to `curl --fail || exit 1` as suggested in [docker documentation](https://docs.docker.com/reference/dockerfile/#healthcheck)
- Add `--silent --show-error` so that docker health state contains the output of the HTTP call instead of curl progress bar
- Set the user agent to make the logs more readable
If we use a local folder volume binding, install_wallabag was failing
because of missing file and permission issues.
This reworks the way we initially create the database when it is missing
or empty.
Superseeds #386Fixes#316#346
Signed-off-by: Kevin Decherf <kevin@kdecherf.com>
Most example docker-compose files include restart: unless-stopped or restart: always. This being absent on Wallabag's example leads to unexpected downtime upon server restart
Sets the workdir to navigate to the wallabag folder when entering.
Makes it much easier to not have to always drill all the way down each time you first shell in.
* Remove Ansible and all Python packages
* Reduce image size by 456 MB (689 MB => 233 MB uncompressed)
* Fixes some open issues, for example, root password is not required if the database already exists.
* Show install and startup traces (traces and errors were hidden by Ansible)
This PR adds in a health check that can used for reporting, monitoring, or autohealing, as well as a `depends_on` statement that ensures wallabag comes up only once the DB and Redis are up.
Update timeout/retries to be more sane
The default value of this variable leads to a lot of issues with assets
when new comers try wallabag. This change should reduce the occurrence of
this kind of issue.
Signed-off-by: Kevin Decherf <kevin@kdecherf.com>
Jump to GitHub Actions mostly because I found them most reliable these days (weeks?) than Travis.
And also because the open source builds are very limited now.
Problem: I try to build image for wallabag 2.4-dev as of Feb 29, 2020.
The building fails due to two missing packages:
* py-mysqldb
* py-psycopg2
It seems these two packages are included in alpine:3.10, not yet in
alpine:latest. After launching wallabag 2.4-dev, a zhihu page reports
error and wallabag suggests to install php7-intl.
Solution:
* Fix alpine version to 3.10. The reason is also to avoid
CVE-2019-5021 (alpine set root password to NULL). 3.10 is not affected.
In case some users use tag 3.9 and happen to have 3.9.2, then they may
be affected.
* Add php7-intl to meet new requirement
Problem: Nginx is only binding to the IPv4. Deployments with IPv6 require forking the image or overwriting `nginx.conf`.
Solution: Edit `nginx.conf` to listen to both IPv4 and IPv6 by making it listen on `[::]:80`.
Note: This may be related and contradictory to #54
@@ -15,7 +15,7 @@ Default login is `wallabag:wallabag`.
## Environment variables
-`-e MYSQL_ROOT_PASSWORD=...` (needed for the mariadb container to initialise and for the entrypoint in the wallabag container to create a database and user if its not there)
-`-e POSTGRES_PASSWORD=...` (needed for the posgres container to initialise and for the entrypoint in the wallabag container to create a database and user if not there)
-`-e POSTGRES_PASSWORD=...` (needed for the postgres container to initialise and for the entrypoint in the wallabag container to create a database and user if not there)
-`-e POSTGRES_USER=...` (needed for the posgres container to initialise and for the entrypoint in the wallabag container to create a database and user if not there)
-`-e SYMFONY__ENV__DATABASE_DRIVER=...` (defaults to "pdo_sqlite", this sets the database driver to use)
-`-e SYMFONY__ENV__DATABASE_HOST=...` (defaults to "127.0.0.1", if use mysql this should be the name of the mariadb container)
@@ -23,27 +23,38 @@ Default login is `wallabag:wallabag`.
-`-e SYMFONY__ENV__DATABASE_NAME=...`(defaults to "symfony", this is the name of the database to use)
-`-e SYMFONY__ENV__DATABASE_USER=...` (defaults to "root", this is the name of the database user to use)
-`-e SYMFONY__ENV__DATABASE_PASSWORD=...` (defaults to "~", this is the password of the database user to use)
-`-e SYMFONY__ENV__DATABASE_CHARSET=...` (defaults to utf8, this is the database charset to use)
-`-e SYMFONY__ENV__DATABASE_TABLE_PREFIX=...` (defaults to "wallabag_". Specifies the prefix for each database table)
-`-e SYMFONY__ENV__SECRET=...` (defaults to "ovmpmAWXRCabNlMgzlzFXDYmCFfzGv")
-`-e SYMFONY__ENV__MAILER_HOST=...`defaults to "127.0.0.1", the SMTP host)
-`-e SYMFONY__ENV__MAILER_USER=...` (defaults to "~", the SMTP user)
-`-e SYMFONY__ENV__MAILER_PASSWORD=...`(defaults to "~", the SMTP password)
-`-e SYMFONY__ENV__FROM_EMAIL=...`(defaults to "wallabag@example.com", the address wallabag uses for outgoing emails)
-`-e SYMFONY__ENV__FOSUSER_REGISTRATION=...`(defaults to "true", enable or disable public user registration)
-`-e SYMFONY__ENV__DOMAIN_NAME=...`defaults to "https://your-wallabag-url-instance.com", the URL of your wallabag instance)
-`-e SYMFONY__ENV__LOCALE=...`(default to en)
-`-e SYMFONY__ENV__MAILER_DSN=...` (defaults to "smtp://127.0.0.1")
-`-e SYMFONY__ENV__FROM_EMAIL=...`(defaults to "`wallabag@example.com`", the address wallabag uses for outgoing emails)
-`-e SYMFONY__ENV__TWOFACTOR_SENDER=...`(defaults to "`no-reply@wallabag.org`", the address wallabag uses for two-factor emails)
-`-e SYMFONY__ENV__FOSUSER_REGISTRATION=...`(defaults to "false", enable or disable public user registration)
-`-e SYMFONY__ENV__FOSUSER_CONFIRMATION=...`(defaults to "true", enable or disable registration confirmation)
-`-e SYMFONY__ENV__DOMAIN_NAME=...` defaults to "`https://your-wallabag-instance.wallabag.org`", the URL of your wallabag instance)
-`-e SYMFONY__ENV__REDIS_SCHEME=...` (defaults to "tcp", protocol to use to communicate with the target server (tcp, unix, or http))
-`-e SYMFONY__ENV__REDIS_HOST=...` (defaults to "redis", IP or hostname of the target server)
-`-e SYMFONY__ENV__REDIS_PORT=...` (defaults to "6379", port of the target host)
-`-e SYMFONY__ENV__REDIS_PATH=...`(defaults to "~", path of the unix socket file)
-`-e SYMFONY__ENV__REDIS_PASSWORD=...` (defaults to "~", this is the password defined in the Redis server configuration)
-`-e SYMFONY__ENV__SENTRY_DSN=...` (defaults to "~", this is the data source name for sentry)
-`-e POPULATE_DATABASE=...`(defaults to "True". Does the DB has to be populated or is it an existing one)
-`-e SYMFONY__ENV__SERVER_NAME=...` (defaults to "Your wallabag instance". Specifies a user-friendly name for the 2FA issuer)
-`-e PHP_MEMORY_LIMIT=...` (allows you to change the PHP `memory_limit` value. defaults to 128M, and should be a number and unit, eg. 512K, 128M, 2G, or a number of bytes)
## SQLite
The easiest way to start wallabag is to use the SQLite backend. You can spin that up with
```
$ docker run -p 80:80 wallabag/wallabag
$ docker run -p 80:80 -e "SYMFONY__ENV__DOMAIN_NAME=http://localhost" wallabag/wallabag
```
and point your browser to `http://localhost:80`. For persistent storage you should start the container with a volume:
and point your browser to `http://localhost`. For persistent storage you should start the container with a volume:
```
$ docker run -v /opt/wallabag/data:/var/www/wallabag/data -v -/opt/wallabag/images:/var/www/wallabag/web/assets/images -p 80:80 wallabag/wallabag
Note that you must fill out the mail related variables according to your mail config.
@@ -149,7 +181,7 @@ server {
## Import worker
To run the [async redis import worker](http://doc.wallabag.org/en/master/developer/asynchronous.html#install-redis-for-asynchronous-tasks) use the following command:
To run the [async redis import worker](https://doc.wallabag.org/en/admin/asynchronous.html#install-redis-for-asynchronous-tasks) use the following command:
```
$ docker run --name wallabag --link wallabag-db:wallabag-db --link redis:redis -e <... your config variables here ...> wallabag/wallabag import <type>
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.