commit 96a801f0637d84970976358b03c28ee61dca6fb8 Author: Lars Klemstein Date: Thu Nov 20 22:39:45 2025 +0100 version 1 diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..4c49bd7 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +.env diff --git a/clean_invites.sh b/clean_invites.sh new file mode 100755 index 0000000..18ca3df --- /dev/null +++ b/clean_invites.sh @@ -0,0 +1,25 @@ +#!/bin/bash +set -euo pipefail + +if [[ -f .env ]]; then + source .env +else + echo "ERROR: .env file not found." + exit 1 +fi + +DB_CONTAINER="outline_db" +DB_USER="${POSTGRES_USER:-outline}" +DB_NAME="${POSTGRES_DB:-outline}" + +echo "[INFO] Removing invitation-related events..." +docker exec -i "$DB_CONTAINER" psql -U "$DB_USER" -d "$DB_NAME" \ + -c "DELETE FROM events WHERE \"userId\" IN (SELECT id FROM users WHERE \"invitedById\" IS NOT NULL AND \"lastActiveAt\" IS NULL);" + +echo "[INFO] Removing all pending invitations..." +docker exec -i "$DB_CONTAINER" psql -U "$DB_USER" -d "$DB_NAME" \ + -c "DELETE FROM users WHERE \"invitedById\" IS NOT NULL AND \"lastActiveAt\" IS NULL;" + +echo "[INFO] Restarting Outline service..." +docker compose restart outline +echo "[INFO] Done. All pending invitations have been removed." diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..930f318 --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,67 @@ +--- +services: + outline: + image: outlinewiki/outline:1.0.1 + container_name: outline + restart: unless-stopped + env_file: .env + environment: + URL: ${OUTLINE_URL} + SECRET_KEY: ${OUTLINE_SECRET_KEY} + UTILS_SECRET: ${OUTLINE_UTILS_SECRET} + + # PostgreSQL + DATABASE_URL: postgres://${POSTGRES_USER}:${POSTGRES_PASSWORD}@outline_db/${POSTGRES_DB}?sslmode=disable + + # Redis + REDIS_URL: redis://default:${REDIS_PASSWORD}@outline_redis:6379 + + # File Storage + FILE_STORAGE: local + FILE_STORAGE_LOCAL_ROOT_DIR: /var/lib/outline/data + + # Disable TLS inside container + FORCE_HTTPS: "false" + + SMTP_HOST: ${SMTP_HOST} + SMTP_PORT: ${SMTP_PORT} + SMTP_USERNAME: ${SMTP_USERNAME} + SMTP_PASSWORD: ${SMTP_PASSWORD} + SMTP_FROM_EMAIL: ${SMTP_FROM_EMAIL} + SMTP_FROM_NAME: ${SMTP_FROM_NAME} + SMTP_SECURE: ${SMTP_SECURE} + ports: + - "127.0.0.1:13001:3000" + depends_on: + - outline_db + - outline_redis + volumes: + - outline_data:/var/lib/outline/data + + outline_db: + image: postgres:15 + container_name: outline_db + restart: unless-stopped + env_file: .env + environment: + POSTGRES_USER: ${POSTGRES_USER} + POSTGRES_PASSWORD: ${POSTGRES_PASSWORD} + POSTGRES_DB: ${POSTGRES_DB} + PGSSLMODE: disable + volumes: + - outline_db_data:/var/lib/postgresql/data + + outline_redis: + image: redis:7 + container_name: outline_redis + restart: unless-stopped + command: ["redis-server", "--requirepass", "${REDIS_PASSWORD}"] + env_file: .env + volumes: + - outline_redis_data:/data + +volumes: + outline_data: + outline_db_data: + outline_redis_data: +