{ "captainVersion": "2", "documentation": "Taken from https://github.com/outline/outline/blob/master/docker-compose.yml", "displayName": "Outline", "description": "An open, extensible, wiki for your team built using React and Node.js.", "dockerCompose": { "services": { "$$cap_appname-redis": { "image": "redis:5", "notExposeAsWebApp": "true" }, "$$cap_appname-fakes3": { "image": "lphoward/fake-s3", "volumes": ["$$cap_appname-fakes3:/fakes3_root"], "notExposeAsWebApp": "true" }, "$$cap_appname-db": { "image": "postgres:12.2", "notExposeAsWebApp": "true", "volumes": ["$$cap_appname-db-data:/var/lib/postgresql/data"], "restart": "always", "environment": { "POSTGRES_USER": "$$cap_db_user", "POSTGRES_PASSWORD": "$$cap_db_pass", "POSTGRES_DB": "outline" } }, "$$cap_appname-outline": { "depends_on": [ "$$cap_appname-fakes3", "$$cap_appname-redis", "$$cap_appname-db" ], "image": "outlinewiki/outline:$$cap_outline_version", "environment": { "SECRET_KEY": "$$cap_secret_key", "UTILS_SECRET": "$$cap_utils_secret", "AWS_ACCESS_KEY_ID": "get_a_key_from_aws", "AWS_SECRET_ACCESS_KEY": "get_the_secret_of_above_key", "AWS_REGION": "xx-xxxx-x", "AWS_S3_UPLOAD_BUCKET_URL": "http://srv-captain--$$cap_appname-fakes3:4569", "AWS_S3_UPLOAD_BUCKET_NAME": "bucket_name_here", "AWS_S3_UPLOAD_MAX_SIZE": "26214400", "AWS_S3_ACL": "private", "SLACK_KEY": "$$cap_slack_key", "SLACK_SECRET": "$$cap_slack_secret", "GOOGLE_CLIENT_ID": "$$cap_google_client_id", "GOOGLE_CLIENT_SECRET": "$$cap_google_client_secret", "FORCE_HTTPS": "false", "DEPLOYMENT": "self", "ENABLE_UPDATES": "false", "SUBDOMAINS_ENABLED": "false", "WEBSOCKETS_ENABLED": "false", "DEBUG": "cache,presenters,events", "URL": "https://$$cap_appname-outline.$$cap_root_domain", "PORT": "80", "REDIS_URL": "redis://srv-captain--$$cap_appname-redis:6379", "DATABASE_URL_TEST": "postgres://$$cap_db_user:$$cap_db_pass@srv-captain--$$cap_appname-db:5432/outline-test", "DATABASE_URL": "postgres://$$cap_db_user:$$cap_db_pass@srv-captain--$$cap_appname-db:5432/outline" } } } }, "instructions": { "start": "Outline is an open, extensible, wiki for your team built using React and Node.js.", "end": "IMPORTANT: before you start using Outline, you need to \n\n 1) Enable HTTPS \n 2) Force HTTPS \n 3) Enable Websocket in $$cap_appname-outline. \n 4) Run database migration `npm run sequelize:migrate` within the $$cap_appname-outline docker container. \n\nYou can customize more settings by environmental variables described here: https://github.com/outline/outline/blob/0deecfac446c37545e0787b3d32062e608a950ab/.env.sample \n\n IMPORTANT: It will take up to 2 minutes for it to be ready. Before that, you might see a 502 error page.\n" }, "variables": [ { "id": "$$cap_db_user", "label": "Database user", "defaultValue": "outlineuser", "validRegex": "/^([a-zA-Z0-9])+$/" }, { "id": "$$cap_db_pass", "label": "Database password", "description": "", "validRegex": "/.{8,}/" }, { "id": "$$cap_slack_key", "label": "Slack Key", "description": "IMPORTANT: You need to, at least, set one 3rd party login method, either Slack or Google", "defaultValue": "get_a_key_from_slack" }, { "id": "$$cap_slack_secret", "label": "Slack Secret", "description": "", "defaultValue": "get_the_secret_of_above_key" }, { "id": "$$cap_google_client_id", "label": "Google Client ID" }, { "id": "$$cap_google_client_secret", "label": "Google Client Secret", "description": "" }, { "id": "$$cap_secret_key", "label": "SECRET_KEY", "description": "Run this command to generate a key: openssl rand -hex 32", "defaultValue": "c63eaeed7ee7459098e2901ed87c8b70817428b85fbe3ef59cb6a79abb2bbf4a", "validRegex": "/^([0-9a-f]){64}$/" }, { "id": "$$cap_utils_secret", "label": "UTILS_SECRET", "description": "Run this command to generate a key: openssl rand -hex 32", "defaultValue": "c9b4d178130f53efc7419eaec9a2e764481269c9602c2ef2e541bdadc63b5bbf", "validRegex": "/^([0-9a-f]){64}$/" }, { "id": "$$cap_outline_version", "label": "Outline Version", "defaultValue": "version-0.41.0", "description": "Check out their page for the valid tags https://hub.docker.com/r/outlinewiki/outline/tags", "validRegex": "/^([^\\s^\\/])+$/" } ] }