From 45841aceacd5a4a06ff0c38629ac589e139cb072 Mon Sep 17 00:00:00 2001 From: Kevin Veen-Birkenbach Date: Tue, 15 Nov 2022 21:43:05 +0100 Subject: [PATCH] implemented mastodon --- roles/docker-mastodon/readme.md | 21 +++++- roles/docker-mastodon/tasks/main.yml | 29 +------- .../templates/.env.production.j2 | 68 ++++++------------- .../templates/docker-compose.yml.j2 | 40 ++++++----- 4 files changed, 60 insertions(+), 98 deletions(-) diff --git a/roles/docker-mastodon/readme.md b/roles/docker-mastodon/readme.md index ba4795f7..5c9ed983 100644 --- a/roles/docker-mastodon/readme.md +++ b/roles/docker-mastodon/readme.md @@ -3,8 +3,27 @@ ```bash docker-compose run --rm web bundle exec rake mastodon:setup ``` +## cleanup +```bash +cd /home/administrator/docker-compose/mastodon/ +docker-compose down +docker volume rm mastodon_data mastodon_database mastodon_redis +cd /home/administrator/docker-compose/ && +rm -vR /home/administrator/docker-compose/mastodon +``` + +## access terminal +```bash +docker exec -it mastodon-streaming-1 /bin/bash +``` + +## set rights +```bash +docker exec -it mastodon-streaming-1 chown -R 991:991 public +``` ## further information - https://goneuland.de/mastodon-mit-docker-und-traefik-installieren/ - https://gist.github.com/TrillCyborg/84939cd4013ace9960031b803a0590c4 -- https://www.2daygeek.com/linux-command-check-website-is-up-down-alive/ \ No newline at end of file +- https://www.2daygeek.com/linux-command-check-website-is-up-down-alive/ +- https://vitobotta.com/2022/11/07/setting-up-a-personal-mastodon-instance/ \ No newline at end of file diff --git a/roles/docker-mastodon/tasks/main.yml b/roles/docker-mastodon/tasks/main.yml index 301237c7..d8f30616 100644 --- a/roles/docker-mastodon/tasks/main.yml +++ b/roles/docker-mastodon/tasks/main.yml @@ -12,35 +12,10 @@ state: directory mode: 0755 -- name: register directory - stat: - path: "{{docker_compose_mastodon_path}}}" - register: docker_compose_mastodon_path_register - -- name: checkout repository - ansible.builtin.shell: git checkout . - become: true - args: - chdir: "{{docker_compose_mastodon_path}}" - when: docker_compose_mastodon_path_register.stat.exists - become: true - -- name: pull docker repository - git: - repo: "https://github.com/tootsuite/mastodon.git" - dest: "{{docker_compose_mastodon_path}}" - update: yes - #notify: recreate mastodon - become: true - - name: copy docker-compose.yml template: src=docker-compose.yml.j2 dest={{docker_compose_mastodon_path}}docker-compose.yml - #notify: recreate mastodon + notify: recreate mastodon - name: copy configuration template: src=.env.production.j2 dest={{docker_compose_mastodon_path}}.env.production - #notify: recreate mastodon - -- name: add docker-compose.yml - template: src=docker-compose.yml.j2 dest={{docker_compose_mastodon_path}}docker-compose.yml - #notify: recreate mastodon + notify: recreate mastodon diff --git a/roles/docker-mastodon/templates/.env.production.j2 b/roles/docker-mastodon/templates/.env.production.j2 index 4a9a39f9..540473cb 100644 --- a/roles/docker-mastodon/templates/.env.production.j2 +++ b/roles/docker-mastodon/templates/.env.production.j2 @@ -1,52 +1,22 @@ LOCAL_DOMAIN={{domain}} - -# Redis -# ----- -REDIS_HOST=localhost -REDIS_PORT=6379 - -# PostgreSQL -# ---------- +SINGLE_USER_MODE=true +SECRET_KEY_BASE={{mastodon_secret_key_base}} +OTP_SECRET={{mastodon_otp_secret}} +VAPID_PRIVATE_KEY={{mastodon_vapid_private_key}} +VAPID_PUBLIC_KEY={{mastodon_vapid_public_key}} DB_HOST=database -DB_USER=mastodon -DB_NAME=mastodon -DB_PASS={{mastodon_database_password}} -DB_PORT=3306 - -# Secrets -# ------- -# Make sure to use `rake secret` to generate secrets -# ------- -SECRET_KEY_BASE= -OTP_SECRET= - -# Web Push -# -------- -# Generate with `rake mastodon:webpush:generate_vapid_key` -# -------- -VAPID_PRIVATE_KEY= -VAPID_PUBLIC_KEY= - -# Sending mail -# ------------ -SMTP_SERVER=smtp.mailgun.org +DB_PORT=5432 +DB_NAME=postgres +DB_USER=postgres +DB_PASS= +REDIS_HOST=redis +REDIS_PORT=6379 +REDIS_PASSWORD= +SMTP_SERVER={{system_email_host}} SMTP_PORT=587 -SMTP_LOGIN= -SMTP_PASSWORD= -SMTP_FROM_ADDRESS=notifications@example.com - -# File storage (optional) -# ----------------------- -S3_ENABLED=true -S3_BUCKET=files.example.com -AWS_ACCESS_KEY_ID= -AWS_SECRET_ACCESS_KEY= -S3_ALIAS_HOST=files.example.com - -# IP and session retention -# ----------------------- -# Make sure to modify the scheduling of ip_cleanup_scheduler in config/sidekiq.yml -# to be less than daily if you lower IP_RETENTION_PERIOD below two days (172800). -# ----------------------- -IP_RETENTION_PERIOD=31556952 -SESSION_RETENTION_PERIOD=31556952 \ No newline at end of file +SMTP_LOGIN={{system_email_username}} +SMTP_PASSWORD={{system_email_password}} +SMTP_AUTH_METHOD=plain +SMTP_OPENSSL_VERIFY_MODE=none +SMTP_ENABLE_STARTTLS=auto +SMTP_FROM_ADDRESS=Mastodon <{{system_email_username}}> diff --git a/roles/docker-mastodon/templates/docker-compose.yml.j2 b/roles/docker-mastodon/templates/docker-compose.yml.j2 index a66793c7..451da3cf 100644 --- a/roles/docker-mastodon/templates/docker-compose.yml.j2 +++ b/roles/docker-mastodon/templates/docker-compose.yml.j2 @@ -1,23 +1,19 @@ version: '3' services: database: + restart: always + image: postgres:14-alpine + shm_size: 256mb + networks: + - internal_network + healthcheck: + test: ['CMD', 'pg_isready', '-U', 'postgres'] + volumes: + - database:/var/lib/postgresql/data + environment: + - 'POSTGRES_HOST_AUTH_METHOD=trust' logging: driver: journald - image: mariadb:10.5 - command: "--transaction-isolation=READ-COMMITTED --binlog-format=ROW" - environment: - MYSQL_DATABASE: "mastodon" - MYSQL_USER: "mastodon" - MYSQL_PASSWORD: "{{mastodon_database_password}}" - MYSQL_RANDOM_ROOT_PASSWORD: 'yes' - volumes: - - database:/var/lib/mysql - restart: always - healthcheck: - test: "/usr/bin/mysql --user=mastodon --password={{mastodon_database_password}} --execute \"SHOW DATABASES;\"" - interval: 3s - timeout: 1s - retries: 5 redis: restart: always image: redis:7-alpine @@ -27,9 +23,9 @@ services: test: ['CMD', 'redis-cli', 'ping'] volumes: - redis:/data - + logging: + driver: journald web: - build: . image: tootsuite/mastodon:{{mastodon_version}} restart: always env_file: .env.production @@ -47,9 +43,9 @@ services: - redis volumes: - data:/mastodon/public/system - + logging: + driver: journald streaming: - build: . image: tootsuite/mastodon:{{mastodon_version}} restart: always env_file: .env.production @@ -65,9 +61,9 @@ services: depends_on: - database - redis - + logging: + driver: journald sidekiq: - build: . image: tootsuite/mastodon:{{mastodon_version}} restart: always env_file: .env.production @@ -82,6 +78,8 @@ services: - data:/mastodon/public/system healthcheck: test: ['CMD-SHELL', "ps aux | grep '[s]idekiq\ 6' || false"] + logging: + driver: journald volumes: database: redis: