summaryrefslogtreecommitdiffhomepage
path: root/public/v4/apps/outline.yml
blob: f720e5c4b63f5367ddfcc50c709644bcdd1e1885 (plain)
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