1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
|
captainVersion: 4
services:
$$cap_appname-redis:
image: redis:$$cap_redis_version
volumes:
- $$cap_appname-redis-data:/redis.conf
restart: always
caproverExtra:
notExposeAsWebApp: 'true'
$$cap_appname-db:
image: postgres:$$cap_postgres_version
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
caproverExtra:
notExposeAsWebApp: 'true'
$$cap_appname:
depends_on:
- $$cap_appname-redis
- $$cap_appname-db
environment:
SECRET_KEY: $$cap_secret_key
UTILS_SECRET: $$cap_utils_secret
DATABASE_URL: postgres://$$cap_db_user:$$cap_db_pass@srv-captain--$$cap_appname-db:5432/outline
DATABASE_URL_TEST: postgres://$$cap_db_user:$$cap_db_pass@srv-captain--$$cap_appname-db:5432/outline-test
PGSSLMODE: disable
REDIS_URL: redis://srv-captain--$$cap_appname-redis:6379
URL: https://$$cap_appname.$$cap_root_domain
PORT: '3000'
AWS_S3_UPLOAD_BUCKET_URL: $$cap_s3_storage_url
AWS_REGION: $$cap_s3_storage_region
AWS_S3_UPLOAD_BUCKET_NAME: $$cap_s3_storage_bucket_name
AWS_ACCESS_KEY_ID: $$cap_s3_storage_access_key_id
AWS_SECRET_ACCESS_KEY: $$cap_s3_storage_secret_access_key
AWS_S3_UPLOAD_MAX_SIZE: '26214400'
AWS_S3_FORCE_PATH_STYLE: true
AWS_S3_ACL: private
GOOGLE_CLIENT_ID: $$cap_google_client_id
GOOGLE_CLIENT_SECRET: $$cap_google_client_secret
FORCE_HTTPS: 'false'
ENABLE_UPDATES: 'false'
DEBUG: http
SMTP_HOST: $$cap_smtp_host
SMTP_PORT: $$cap_smtp_port
SMTP_USERNAME: $$cap_smtp_username
SMTP_PASSWORD: $$cap_smtp_password
SMTP_FROM_EMAIL: $$cap_smtp_from_email
SMTP_REPLY_EMAIL: $$cap_smtp_reply_email
SMTP_TLS_CIPHERS: $$cap_smtp_tls_ciphers
SMTP_SECURE: $$cap_smtp_secure
DEFAULT_LANGUAGE: $$cap_default_language
caproverExtra:
containerHttpPort: '3000'
dockerfileLines:
- FROM outlinewiki/outline:$$cap_outline_version
- EXPOSE 3000
- CMD yarn db:migrate --env production-ssl-disabled; yarn start
caproverOneClickApp:
variables:
- id: $$cap_outline_version
label: Outline Version
defaultValue: 0.68.1
description: Check out their page for the valid tags https://hub.docker.com/r/outlinewiki/outline/tags
validRegex: /^([^\s^\/])+$/
- id: $$cap_postgres_version
label: Postgres Version
defaultValue: '14.4'
description: Check out their page for the valid tags https://hub.docker.com/_/postgres?tab=tags
validRegex: /^([^\s^\/])+$/
- id: $$cap_redis_version
label: Redis Version
defaultValue: 7.0.2
description: Check out their Docker page for the valid tags https://hub.docker.com/_/redis?tab=tags
validRegex: /^([^\s^\/])+$/
- id: $$cap_secret_key
label: SECRET_KEY
description: 'Run this command to generate a key: `openssl rand -hex 32`'
validRegex: /^([0-9a-f]){64}$/
- id: $$cap_utils_secret
label: UTILS_SECRET
description: 'Run this command to generate a key: `openssl rand -hex 32`'
validRegex: /^([0-9a-f]){64}$/
- id: $$cap_db_user
label: Database user
defaultValue: outline_user
validRegex: /^([a-zA-Z0-9_])+$/
- id: $$cap_db_pass
label: Database password
description: ''
defaultValue: $$cap_gen_random_hex(20)
validRegex: /.{8,}/
- id: $$cap_s3_storage_url
label: S3 Storage compatible API URL for instance Minio, AWS, etc.
description: 'NB: You can have your own S3 storage by using the Open Source Minio alternative (there is a Caprover one-click-apps for that)'
defaultValue: https://YOUR_S3_STORAGE_PROVIDER_API_URL
- id: $$cap_s3_storage_region
label: S3 Storage region
description: 'Name of the location of the server e.g. "us-west-rack2"'
defaultValue: eu-east-1
- id: $$cap_s3_storage_bucket_name
label: S3 Storage bucket name
description: "Log into the Minio dashboard, then select the `Create Bucket` menu option to create a new bucket (e.g. named outline-data). Don't forget to add `Read and Write` policy to the bucket so the Outline app would be able to upload content"
defaultValue: outline-data
- id: $$cap_s3_storage_access_key_id
label: S3 storage Access Key ID
description: 'For instance in your Minio instance, create a new user called outline_user for the outline app with a new policy that grants full access inside the bucket (e.g. outlineAppFullAccess - see also https://wiki.generaloutline.com/share/125de1cc-9ff6-424b-8415-0d58c809a40f#h-iam-policy)'
defaultValue: outline_user
- id: $$cap_s3_storage_secret_access_key
label: S3 storage Secret Access Key
description: 'For instance in your Minio instance it correponds to the password/secret of above outline_user'
- id: $$cap_google_client_id
label: Google Client ID
- id: $$cap_google_client_secret
label: Google Client Secret
- id: $$cap_smtp_host
label: SMTP host
description: To support sending outgoing transactional emails such as "document updated" or "you've been invited" you'll need to provide authentication for an SMTP server
- id: $$cap_smtp_port
label: SMTP port
- id: $$cap_smtp_username
label: SMTP username
- id: $$cap_smtp_password
label: SMTP password
- id: $$cap_smtp_from_email
label: SMTP from email
- id: $$cap_smtp_reply_email
label: SMTP reply email
- id: $$cap_smtp_tls_ciphers
label: SMTP TLS ciphers
- id: $$cap_smtp_secure
label: SMTP Secure
defaultValue: true
- id: $$cap_default_language
label: The default interface language
description: See translate.getoutline.com for a list of available language codes and their rough percentage translated.
defaultValue: en_US
instructions:
start: >
Outline is an open, extensible, wiki for your team built using React and Node.js.
Outline requires an external authentication provider such as Google/Slack, etc.
If you don't want to rely on those solutions you can use a generic OpenID Connect Server.
For instance you can use the Open Source Keycloak alternative (there is a Caprover one-click-apps for that)
IMPORTANT: You need to, at least, set one 3rd party login method, either Keycloak, Slack or Google
end: >
IMPORTANT: before you start using Outline, you need to
1) Enable HTTPS
2) Force HTTPS
3) Enable Websocket in $$cap_appname.
4) Configure your authentication method following instructions: https://wiki.generaloutline.com/s/hosting/doc/authentication-7ViKRmRY5o
You can customize more settings by environmental variables described here: https://github.com/outline/outline/blob/0deecfac446c37545e0787b3d32062e608a950ab/.env.sample
IMPORTANT: It will take up to 2 minutes for it to be ready. Before that, you might see a 502 error page.
displayName: Outline
isOfficial: true
description: An open, extensible, wiki for your team built using React and Node.js.
documentation: Taken from https://github.com/outline/outline/blob/master/docker-compose.yml
|