diff --git a/sources/lissy93_templates.json b/sources/lissy93_templates.json new file mode 100644 index 0000000..37ade51 --- /dev/null +++ b/sources/lissy93_templates.json @@ -0,0 +1,205 @@ +{ + "version": "2", + "templates": [ + { + "categories": [ + "Productivity", + "Social" + ], + "description": "Open source collaborative knowledge base for modern teams", + "env": [ + { + "default": "production", + "label": "NODE_ENV", + "name": "NODE_ENV" + }, + { + "default": "", + "label": "SECRET_KEY", + "name": "SECRET_KEY" + }, + { + "default": "", + "label": "UTILS_SECRET", + "name": "UTILS_SECRET" + }, + { + "default": "", + "label": "DATABASE_URL", + "name": "DATABASE_URL" + }, + { + "default": "", + "label": "DATABASE_URL_TEST", + "name": "DATABASE_URL_TEST" + }, + { + "default": "", + "label": "DATABASE_CONNECTION_POOL_MIN", + "name": "DATABASE_CONNECTION_POOL_MIN" + }, + { + "default": "", + "label": "DATABASE_CONNECTION_POOL_MAX", + "name": "DATABASE_CONNECTION_POOL_MAX" + }, + { + "default": "", + "label": "REDIS_URL", + "name": "REDIS_URL" + }, + { + "default": "", + "label": "URL", + "name": "URL" + }, + { + "default": "3000", + "label": "PORT", + "name": "PORT" + }, + { + "default": "", + "label": "COLLABORATION_URL", + "name": "COLLABORATION_URL" + }, + { + "default": "", + "label": "GOOGLE_CLIENT_ID", + "name": "GOOGLE_CLIENT_ID" + }, + { + "default": "", + "label": "GOOGLE_CLIENT_SECRET", + "name": "GOOGLE_CLIENT_SECRET" + }, + { + "default": "", + "label": "SSL_KEY", + "name": "SSL_KEY" + }, + { + "default": "", + "label": "SSL_CERT", + "name": "SSL_CERT" + }, + { + "default": "true", + "label": "FORCE_HTTPS", + "name": "FORCE_HTTPS" + }, + { + "default": "true", + "label": "ENABLE_UPDATES", + "name": "ENABLE_UPDATES" + }, + { + "default": "1", + "label": "WEB_CONCURRENCY", + "name": "WEB_CONCURRENCY" + }, + { + "default": "5120000", + "label": "MAXIMUM_IMPORT_SIZE", + "name": "MAXIMUM_IMPORT_SIZE" + }, + { + "default": "http", + "label": "DEBUG", + "name": "DEBUG" + }, + { + "default": "info", + "label": "LOG_LEVEL", + "name": "LOG_LEVEL" + }, + { + "default": "", + "label": "GOOGLE_ANALYTICS_ID", + "name": "GOOGLE_ANALYTICS_ID" + }, + { + "default": "", + "label": "SENTRY_DSN", + "name": "SENTRY_DSN" + }, + { + "default": "", + "label": "SENTRY_TUNNEL", + "name": "SENTRY_TUNNEL" + }, + { + "default": "", + "label": "SMTP_HOST", + "name": "SMTP_HOST" + }, + { + "default": "", + "label": "SMTP_PORT", + "name": "SMTP_PORT" + }, + { + "default": "", + "label": "SMTP_USERNAME", + "name": "SMTP_USERNAME" + }, + { + "default": "", + "label": "SMTP_PASSWORD", + "name": "SMTP_PASSWORD" + }, + { + "default": "", + "label": "SMTP_FROM_EMAIL", + "name": "SMTP_FROM_EMAIL" + }, + { + "default": "", + "label": "SMTP_REPLY_EMAIL", + "name": "SMTP_REPLY_EMAIL" + }, + { + "default": "", + "label": "SMTP_TLS_CIPHERS", + "name": "SMTP_TLS_CIPHERS" + }, + { + "default": "true", + "label": "SMTP_SECURE", + "name": "SMTP_SECURE" + }, + { + "default": "en_US", + "label": "DEFAULT_LANGUAGE", + "name": "DEFAULT_LANGUAGE" + }, + { + "default": "true", + "label": "RATE_LIMITER_ENABLED", + "name": "RATE_LIMITER_ENABLED" + }, + { + "default": "1000", + "label": "RATE_LIMITER_REQUESTS", + "name": "RATE_LIMITER_REQUESTS" + }, + { + "default": "60", + "label": "RATE_LIMITER_DURATION_WINDOW", + "name": "RATE_LIMITER_DURATION_WINDOW" + } + ], + "logo": "https://avatars.githubusercontent.com/u/1765001", + "name": "outline", + "note": "Open source collaborative knowledge base for modern teams", + "platform": "linux", + "repository": { + "stackfile": "sources/stacks/outline.yml", + "url": "https://github.com/lissy93/portainer-templates" + }, + "restart_policy": "unless-stopped", + "title": "Outline", + "type": 3 + } + ] +} diff --git a/sources/stacks/outline.yml b/sources/stacks/outline.yml new file mode 100644 index 0000000..8e43377 --- /dev/null +++ b/sources/stacks/outline.yml @@ -0,0 +1,88 @@ +version: "3" +services: + + outline: + image: docker.getoutline.com/outlinewiki/outline:latest + env_file: ./docker.env + ports: + - "3000:3000" + depends_on: + - postgres + - redis + - storage + + redis: + image: redis + env_file: ./docker.env + ports: + - "6379:6379" + volumes: + - ./redis.conf:/redis.conf + command: ["redis-server", "/redis.conf"] + healthcheck: + test: ["CMD", "redis-cli", "ping"] + interval: 10s + timeout: 30s + retries: 3 + + postgres: + image: postgres + env_file: ./docker.env + ports: + - "5432:5432" + volumes: + - database-data:/var/lib/postgresql/data + healthcheck: + test: ["CMD", "pg_isready"] + interval: 30s + timeout: 20s + retries: 3 + environment: + POSTGRES_USER: 'user' + POSTGRES_PASSWORD: 'pass' + POSTGRES_DB: 'outline' + + storage: + image: minio/minio + env_file: ./docker.env + ports: + - "9000:9000" + entrypoint: sh + command: -c 'minio server' + deploy: + restart_policy: + condition: on-failure + volumes: + - storage-data:/data + healthcheck: + test: ["CMD", "curl", "-f", "http://localhost:9000/minio/health/live"] + interval: 30s + timeout: 20s + retries: 3 + + https-portal: + image: steveltn/https-portal + env_file: ./docker.env + ports: + - '80:80' + - '443:443' + links: + - outline + - storage + restart: always + volumes: + - https-portal-data:/var/lib/https-portal + healthcheck: + test: ["CMD", "service", "nginx", "status"] + interval: 30s + timeout: 20s + retries: 3 + environment: + DOMAINS: 'docs.mycompany.com -> http://outline:3000' + STAGE: 'production' + WEBSOCKET: 'true' + +volumes: + https-portal-data: + storage-data: + database-data: \ No newline at end of file