I don’t self-host a lot of things, but I’d say this is not the easiest I’ve done, just because it involves setting up multiple containers (unlike something like SearXNG). Also thought that I had to set-up an SMTP container, but I got away with not having to do it.
I used ansible (and pass to store credentials), so this is how I did it (maybe someone can pitch in and tell me what I can improve):
Finally, you then have to login with user:wallabag and password:wallabag and change them in the webUI. I changed the “wallabag” user to my user and set a new password.
I don’t self-host a lot of things, but I’d say this is not the easiest I’ve done, just because it involves setting up multiple containers (unlike something like SearXNG). Also thought that I had to set-up an SMTP container, but I got away with not having to do it.
I used ansible (and
pass
to store credentials), so this is how I did it (maybe someone can pitch in and tell me what I can improve):- name: Deploy Wallabag database community.docker.docker_container: name: db_wallabag image: mariadb recreate: true state: started memory: 500MB restart_policy: always log_options: max-size: "10m" max-file: "1" env: MYSQL_ROOT_PASSWORD: "{{ lookup('community.general.passwordstore', 'self_host_containers/wallabag_mysql_root_password', missing='warn') }}" volumes: - ~/wallabag/data:/var/lib/mysql healthcheck: test: ["CMD", "mysqladmin", "ping", "-h", "localhost"] interval: 20s timeout: 3s - name: Deploy Wallabag redis community.docker.docker_container: name: redis_wallabag image: redis:alpine recreate: true state: started memory: 500MB restart_policy: always log_options: max-size: "10m" max-file: "1" links: - "db_wallabag:db_wallabag" healthcheck: test: ["CMD", "redis-cli", "ping"] interval: 20s timeout: 3s - name: Deploy Wallabag community.docker.docker_container: image: wallabag/wallabag:latest name: wallabag recreate: true state: started memory: 500MB restart_policy: always log_options: max-size: "10m" max-file: "1" links: - "redis_wallabag:redis_wallabag" - "db_wallabag:db_wallabag" ports: - "80" env: MYSQL_ROOT_PASSWORD: "{{ lookup('community.general.passwordstore', 'self_host_containers/wallabag_mysql_root_password', missing='warn') }}" SYMFONY__ENV__DATABASE_DRIVER: pdo_mysql SYMFONY__ENV__DATABASE_HOST: db_wallabag SYMFONY__ENV__DATABASE_PORT: "3306" SYMFONY__ENV__DATABASE_NAME: db_wallabag SYMFONY__ENV__DATABASE_USER: db_wallabag SYMFONY__ENV__DATABASE_PASSWORD: "{{ lookup('community.general.passwordstore', 'self_host_containers/wallabag_symfony_env_database_password', missing='warn') }}" SYMFONY__ENV__DATABASE_CHARSET: utf8mb4 SYMFONY__ENV__DATABASE_TABLE_PREFIX: "wallabag_" SYMFONY__ENV__MAILER_DSN: smtp://127.0.0.1 SYMFONY__ENV__FROM_EMAIL: wallabag@example.com SYMFONY__ENV__DOMAIN_NAME: SYMFONY__ENV__SERVER_NAME: volumes: - ~/wallabag/images:/var/www/wallabag/web/assets/images - ~/wallabag/data:/var/www/wallabag/data healthcheck: test: ["CMD", "wget", "--no-verbose", "--tries=1", "--spider", "http://localhost"] interval: 1m timeout: 3s
Then I set up caddy for the reverse proxy
- name: Upload Caddyfile ansible.builtin.copy: src: ./upload_files/Caddyfile dest: ~/Caddyfile - name: Deploy caddy community.docker.docker_container: image: caddy:2 name: caddy user: "1000:1000" recreate: true state: started memory: 500MB restart_policy: always log_options: max-size: "10m" max-file: "1" links: - "wallabag:wallabag" ports: - "80:80" - "443:443" volumes: - ~/Caddyfile:/etc/caddy/Caddyfile - ~/caddy_data:/data - ~/caddy_config:/config
And this is the
Caddyfile
my.url.com { reverse_proxy wallabag:80 }
Finally, you then have to login with user:wallabag and password:wallabag and change them in the webUI. I changed the “wallabag” user to my user and set a new password.