this post was submitted on 23 Aug 2023
119 points (97.6% liked)

Asklemmy

43885 readers
1845 users here now

A loosely moderated place to ask open-ended questions

Search asklemmy ๐Ÿ”

If your post meets the following criteria, it's welcome here!

  1. Open-ended question
  2. Not offensive: at this point, we do not have the bandwidth to moderate overtly political discussions. Assume best intent and be excellent to each other.
  3. Not regarding using or support for Lemmy: context, see the list of support communities and tools for finding communities below
  4. Not ad nauseam inducing: please make sure it is a question that would be new to most members
  5. An actual topic of discussion

Looking for support?

Looking for a community?

~Icon~ ~by~ ~@Double_A@discuss.tchncs.de~

founded 5 years ago
MODERATORS
you are viewing a single comment's thread
view the rest of the comments
[โ€“] mim@lemmy.sdf.org 2 points 1 year ago* (last edited 1 year ago)

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.