There have been multiple accounts created with the sole purpose of posting advertisement posts or replies containing unsolicited advertising.

Accounts which solely post advertisements, or persistently post them may be terminated.

mim ,

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):


<span style="color:#323232;">- name: Deploy Wallabag database
</span><span style="color:#323232;">  community.docker.docker_container:
</span><span style="color:#323232;">    name: db_wallabag
</span><span style="color:#323232;">    image: mariadb
</span><span style="color:#323232;">    recreate: true
</span><span style="color:#323232;">    state: started
</span><span style="color:#323232;">    memory: 500MB
</span><span style="color:#323232;">    restart_policy: always
</span><span style="color:#323232;">    log_options:
</span><span style="color:#323232;">      max-size: "10m"
</span><span style="color:#323232;">      max-file: "1"
</span><span style="color:#323232;">    env:
</span><span style="color:#323232;">      MYSQL_ROOT_PASSWORD: "{{ lookup('community.general.passwordstore', 'self_host_containers/wallabag_mysql_root_password', missing='warn') }}"
</span><span style="color:#323232;">    volumes:
</span><span style="color:#323232;">    - ~/wallabag/data:/var/lib/mysql
</span><span style="color:#323232;">    healthcheck:
</span><span style="color:#323232;">      test: ["CMD", "mysqladmin", "ping", "-h", "localhost"]
</span><span style="color:#323232;">      interval: 20s
</span><span style="color:#323232;">      timeout: 3s
</span><span style="color:#323232;">
</span><span style="color:#323232;">- name: Deploy Wallabag redis
</span><span style="color:#323232;">  community.docker.docker_container:
</span><span style="color:#323232;">    name: redis_wallabag
</span><span style="color:#323232;">    image: redis:alpine
</span><span style="color:#323232;">    recreate: true
</span><span style="color:#323232;">    state: started
</span><span style="color:#323232;">    memory: 500MB
</span><span style="color:#323232;">    restart_policy: always
</span><span style="color:#323232;">    log_options:
</span><span style="color:#323232;">      max-size: "10m"
</span><span style="color:#323232;">      max-file: "1"
</span><span style="color:#323232;">    links:
</span><span style="color:#323232;">    - "db_wallabag:db_wallabag"
</span><span style="color:#323232;">    healthcheck:
</span><span style="color:#323232;">      test: ["CMD", "redis-cli", "ping"]
</span><span style="color:#323232;">      interval: 20s
</span><span style="color:#323232;">      timeout: 3s
</span><span style="color:#323232;">
</span><span style="color:#323232;">- name: Deploy Wallabag
</span><span style="color:#323232;">  community.docker.docker_container:
</span><span style="color:#323232;">    image: wallabag/wallabag:latest
</span><span style="color:#323232;">    name: wallabag
</span><span style="color:#323232;">    recreate: true
</span><span style="color:#323232;">    state: started
</span><span style="color:#323232;">    memory: 500MB
</span><span style="color:#323232;">    restart_policy: always
</span><span style="color:#323232;">    log_options:
</span><span style="color:#323232;">      max-size: "10m"
</span><span style="color:#323232;">      max-file: "1"
</span><span style="color:#323232;">    links:
</span><span style="color:#323232;">    - "redis_wallabag:redis_wallabag"
</span><span style="color:#323232;">    - "db_wallabag:db_wallabag"
</span><span style="color:#323232;">    ports:
</span><span style="color:#323232;">    - "80"
</span><span style="color:#323232;">    env:
</span><span style="color:#323232;">      MYSQL_ROOT_PASSWORD: "{{ lookup('community.general.passwordstore', 'self_host_containers/wallabag_mysql_root_password', missing='warn') }}"
</span><span style="color:#323232;">      SYMFONY__ENV__DATABASE_DRIVER: pdo_mysql
</span><span style="color:#323232;">      SYMFONY__ENV__DATABASE_HOST: db_wallabag
</span><span style="color:#323232;">      SYMFONY__ENV__DATABASE_PORT: "3306"
</span><span style="color:#323232;">      SYMFONY__ENV__DATABASE_NAME: db_wallabag
</span><span style="color:#323232;">      SYMFONY__ENV__DATABASE_USER: db_wallabag
</span><span style="color:#323232;">      SYMFONY__ENV__DATABASE_PASSWORD: "{{ lookup('community.general.passwordstore', 'self_host_containers/wallabag_symfony_env_database_password', missing='warn') }}"
</span><span style="color:#323232;">      SYMFONY__ENV__DATABASE_CHARSET: utf8mb4
</span><span style="color:#323232;">      SYMFONY__ENV__DATABASE_TABLE_PREFIX: "wallabag_"
</span><span style="color:#323232;">      SYMFONY__ENV__MAILER_DSN: smtp://127.0.0.1
</span><span style="color:#323232;">      SYMFONY__ENV__FROM_EMAIL: [email protected]
</span><span style="color:#323232;">      SYMFONY__ENV__DOMAIN_NAME: 
</span><span style="color:#323232;">      SYMFONY__ENV__SERVER_NAME: 
</span><span style="color:#323232;">    volumes:
</span><span style="color:#323232;">    - ~/wallabag/images:/var/www/wallabag/web/assets/images
</span><span style="color:#323232;">    - ~/wallabag/data:/var/www/wallabag/data
</span><span style="color:#323232;">    healthcheck:
</span><span style="color:#323232;">      test: ["CMD", "wget", "--no-verbose", "--tries=1", "--spider", "http://localhost"]
</span><span style="color:#323232;">      interval: 1m
</span><span style="color:#323232;">      timeout: 3s
</span><span style="color:#323232;">
</span><span style="color:#323232;">
</span>

Then I set up caddy for the reverse proxy


<span style="color:#323232;">- name: Upload Caddyfile
</span><span style="color:#323232;">  ansible.builtin.copy:
</span><span style="color:#323232;">    src: ./upload_files/Caddyfile
</span><span style="color:#323232;">    dest: ~/Caddyfile
</span><span style="color:#323232;">
</span><span style="color:#323232;">- name: Deploy caddy
</span><span style="color:#323232;">  community.docker.docker_container:
</span><span style="color:#323232;">    image: caddy:2
</span><span style="color:#323232;">    name: caddy
</span><span style="color:#323232;">    user: "1000:1000"
</span><span style="color:#323232;">    recreate: true
</span><span style="color:#323232;">    state: started
</span><span style="color:#323232;">    memory: 500MB
</span><span style="color:#323232;">    restart_policy: always
</span><span style="color:#323232;">    log_options:
</span><span style="color:#323232;">      max-size: "10m"
</span><span style="color:#323232;">      max-file: "1"
</span><span style="color:#323232;">    links:
</span><span style="color:#323232;">    - "wallabag:wallabag"
</span><span style="color:#323232;">    ports:
</span><span style="color:#323232;">    - "80:80"
</span><span style="color:#323232;">    - "443:443"
</span><span style="color:#323232;">    volumes:
</span><span style="color:#323232;">    - ~/Caddyfile:/etc/caddy/Caddyfile
</span><span style="color:#323232;">    - ~/caddy_data:/data
</span><span style="color:#323232;">    - ~/caddy_config:/config
</span>

And this is the Caddyfile


<span style="color:#323232;">my.url.com {
</span><span style="color:#323232;">    reverse_proxy wallabag:80
</span><span style="color:#323232;">}
</span>

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.

  • All
  • Subscribed
  • Moderated
  • Favorites
  • [email protected]
  • random
  • lifeLocal
  • goranko
  • All magazines