Skip to content

Commit

Permalink
Predefined service: Overleaf (#252)
Browse files Browse the repository at this point in the history
* Create service template for Overleaf

* Add README

* Add to supported services

* Fix bugs

* Fix last bug
  • Loading branch information
marcauberer committed Dec 12, 2021
1 parent 3b69c9c commit 9e931a7
Show file tree
Hide file tree
Showing 9 changed files with 130 additions and 10 deletions.
15 changes: 8 additions & 7 deletions docs/docs/supported-services.md
Original file line number Diff line number Diff line change
Expand Up @@ -21,13 +21,14 @@ The following table shows all services which Compose Generator currently support
| [`Mediawiki`](https://github.com/compose-generator/compose-generator/tree/release/v1.5.x/predefined-services/frontend/mediawiki) | [`Pi-hole`](https://github.com/compose-generator/compose-generator/tree/release/v1.5.x/predefined-services/backend/pi-hole) | *more to come ...* | |
| [`Nextcloud`](https://github.com/compose-generator/compose-generator/tree/release/v1.5.x/predefined-services/frontend/nextcloud) | [`Plex`](https://github.com/compose-generator/compose-generator/tree/release/v1.5.x/predefined-services/backend/plex) | | |
| [`OpenProject`](https://github.com/compose-generator/compose-generator/tree/release/v1.5.x/predefined-services/frontend/openproject) | [`Prometheus`](https://github.com/compose-generator/compose-generator/tree/release/v1.5.x/predefined-services/backend/prometheus) | | |
| [`Owncloud`](https://github.com/compose-generator/compose-generator/tree/release/v1.5.x/predefined-services/frontend/owncloud) | [`Rocket`](https://github.com/compose-generator/compose-generator/tree/release/v1.5.x/predefined-services/backend/rocket) | | |
| [`Paperless-ng`](https://github.com/compose-generator/compose-generator/tree/release/v1.5.x/predefined-services/frontend/paperless-ng) :fontawesome-brands-dev: | [`Ruby on Rails`](https://github.com/compose-generator/compose-generator/tree/release/v1.5.x/predefined-services/backend/rails) | | |
| [`React`](https://github.com/compose-generator/compose-generator/tree/release/v1.5.x/predefined-services/frontend/react) | [`Spring with Gradle`](https://github.com/compose-generator/compose-generator/tree/release/v1.5.x/predefined-services/backend/spring-gradle) | | |
| [`SonarQube`](https://github.com/compose-generator/compose-generator/tree/release/v1.5.x/predefined-services/frontend/sonarqube) | [`Spring with Maven`](https://github.com/compose-generator/compose-generator/tree/release/v1.5.x/predefined-services/backend/spring-maven) | | |
| [`Uptime Kuma`](https://github.com/compose-generator/compose-generator/tree/release/v1.5.x/predefined-services/frontend/uptime-kuma) | [`TeamSpeak`](https://github.com/compose-generator/compose-generator/tree/release/v1.5.x/predefined-services/backend/teamspeak) :new: | | |
| [`Vue`](https://github.com/compose-generator/compose-generator/tree/release/v1.5.x/predefined-services/frontend/vue) | [`Telegram Bot`](https://github.com/compose-generator/compose-generator/tree/release/v1.5.x/predefined-services/backend/telegram-bot) | | |
| [`Wordpress`](https://github.com/compose-generator/compose-generator/tree/release/v1.5.x/predefined-services/frontend/wordpress) | *more to come ...* | | |
| [`Overleaf`](https://github.com/compose-generator/compose-generator/tree/release/v1.5.x/predefined-services/frontend/overleaf) :fontawesome-brands-dev: | [`Rocket`](https://github.com/compose-generator/compose-generator/tree/release/v1.5.x/predefined-services/backend/rocket) | | |
| [`Owncloud`](https://github.com/compose-generator/compose-generator/tree/release/v1.5.x/predefined-services/frontend/owncloud) | [`Ruby on Rails`](https://github.com/compose-generator/compose-generator/tree/release/v1.5.x/predefined-services/backend/rails) | | |
| [`Paperless-ng`](https://github.com/compose-generator/compose-generator/tree/release/v1.5.x/predefined-services/frontend/paperless-ng) :fontawesome-brands-dev: | [`Spring with Gradle`](https://github.com/compose-generator/compose-generator/tree/release/v1.5.x/predefined-services/backend/spring-gradle) | | |
| [`React`](https://github.com/compose-generator/compose-generator/tree/release/v1.5.x/predefined-services/frontend/react) | [`Spring with Maven`](https://github.com/compose-generator/compose-generator/tree/release/v1.5.x/predefined-services/backend/spring-maven) | | |
| [`SonarQube`](https://github.com/compose-generator/compose-generator/tree/release/v1.5.x/predefined-services/frontend/sonarqube) | [`TeamSpeak`](https://github.com/compose-generator/compose-generator/tree/release/v1.5.x/predefined-services/backend/teamspeak) :new: | | |
| [`Uptime Kuma`](https://github.com/compose-generator/compose-generator/tree/release/v1.5.x/predefined-services/frontend/uptime-kuma) | [`Telegram Bot`](https://github.com/compose-generator/compose-generator/tree/release/v1.5.x/predefined-services/backend/telegram-bot) | | |
| [`Vue`](https://github.com/compose-generator/compose-generator/tree/release/v1.5.x/predefined-services/frontend/vue) | *more to come ...* | | |
| [`Wordpress`](https://github.com/compose-generator/compose-generator/tree/release/v1.5.x/predefined-services/frontend/wordpress) | | | |
| [`YouTrack`](https://github.com/compose-generator/compose-generator/tree/release/v1.5.x/predefined-services/frontend/youtrack) | | | |
| *more to come ...* | | | |

Expand Down
2 changes: 1 addition & 1 deletion predefined-services/database/mongodb/config.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"label": "MongoDB",
"preselected": "false",
"preselected": "services.frontend contains name == \"overleaf\"",
"proxied": false,
"serviceInitCmd": [
"cd ${{VOLUME_MONGODB_INIT}}",
Expand Down
3 changes: 3 additions & 0 deletions predefined-services/database/mongodb/service.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,9 @@ image: mongo:${{MONGODB_VERSION}}
container_name: ${{PROJECT_NAME_CONTAINER}}-db-mongodb
restart: always
networks:
#? if services.frontend contains name == "overleaf" {
# - overleaf-mongodb
#? }
#? if has services.backend {
# - backend-database
#? }
Expand Down
2 changes: 1 addition & 1 deletion predefined-services/database/redis/config.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"label": "Redis",
"preselected": "services.frontend contains name == \"paperless-ng\"",
"preselected": "services.frontend contains name == \"paperless-ng\" | services.frontend contains name == \"overleaf\"",
"proxied": false,
"files": [
{
Expand Down
5 changes: 4 additions & 1 deletion predefined-services/database/redis/service.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,9 @@ networks:
#? if services.frontend contains name == "paperless-ng" {
# - paperless-ng-redis
#? }
#? if services.frontend contains name == "overleaf" {
# - overleaf-redis
#? }
#? if has services.backend {
# - backend-database
#? }
Expand All @@ -17,4 +20,4 @@ volumes:
- ${{VOLUME_REDIS_DATA}}:/data
env_file:
- environment.env
command: redis-server --requirepass "$REDIS_PASSWORD"
command: redis-server --requirepass ${REDIS_PASSWORD}
11 changes: 11 additions & 0 deletions predefined-services/frontend/overleaf/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
## Overleaf
Overleaf is a web-based editor to collaborate on LaTex projects.

### Setup
Overleaf is considered as frontend service and can therefore be found in frontends collection, when generating the compose configuration with Compose Generator.

### Create Admin user
To create the admin user, execute the following command on the Docker host system while the containers are running:
```sh
docker exec ${{PROJECT_NAME_CONTAINER}}-frontend-overleaf /bin/bash -c "cd /var/www/sharelatex; grunt user:create-admin --email=<admin-mail>"
```
79 changes: 79 additions & 0 deletions predefined-services/frontend/overleaf/config.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,79 @@
{
"label": "Overleaf",
"preselected": "false",
"proxied": true,
"files": [
{
"path": "service.yml",
"type": "service"
},
{
"path": "README.md",
"type": "docs"
},
{
"path": "environment.env",
"type": "env"
}
],
"questions": [
{
"text": "How do you want to call your overleaf instance?",
"type": 2,
"defaultValue": "My Overleaf Instance",
"validator": "required",
"variable": "OVERLEAF_NAME"
},
{
"text": "Which email address do you want to set as admin email?",
"type": 2,
"validator": "email",
"variable": "OVERLEAF_ADMIN_EMAIL"
},
{
"text": "Which SMTP host do you want to use?",
"type": 2,
"validator": "required",
"variable": "OVERLEAF_SMTP_HOST"
},
{
"text": "Which SMTP port do you want to use?",
"type": 2,
"defaultValue": "587",
"validator": "port",
"variable": "OVERLEAF_SMTP_PORT"
},
{
"text": "Which SMTP user do you want to use?",
"type": 2,
"validator": "required",
"variable": "OVERLEAF_SMTP_USER"
},
{
"text": "Which SMTP password do you want to use?",
"type": 2,
"variable": "OVERLEAF_SMTP_PASSWORD"
},
{
"text": "On which port do you want to expose Overleaf?",
"type": 2,
"defaultValue": "80",
"validator": "port",
"variable": "OVERLEAF_PORT"
},
{
"text": "Which version of Overleaf do you want to use?",
"type": 2,
"defaultValue": "3.0",
"variable": "OVERLEAF_VERSION"
}
],
"volumes": [
{
"text": "Custom path for Overleaf data volume?",
"defaultValue": "./volumes/overleaf-data",
"variable": "VOLUME_OVERLEAF_DATA",
"advanced": true
}
]
}
11 changes: 11 additions & 0 deletions predefined-services/frontend/overleaf/environment.env
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
SHARELATEX_APP_NAME='"${{OVERLEAF_NAME}}"'
SHARELATEX_MONGO_URL=mongodb://${{MONGODB_APPLICATION_USER}}:${{_PW_MONGODB_APPLICATION}}@database-mongodb/${{MONGODB_DATABASE}}
SHARELATEX_REDIS_HOST=database-redis
SHARELATEX_REDIS_PASS=${{_PW_REDIS}}
EMAIL_CONFIRMATION_DISABLED=true
SHARELATEX_ADMIN_EMAIL=${{OVERLEAF_ADMIN_EMAIL}}
SHARELATEX_EMAIL_FROM_ADDRESS=${{OVERLEAF_ADMIN_EMAIL}}
SHARELATEX_EMAIL_SMTP_HOST=${{OVERLEAF_SMTP_HOST}}
SHARELATEX_EMAIL_SMTP_PORT=${{OVERLEAF_SMTP_PORT}}
SHARELATEX_EMAIL_SMTP_USER=${{OVERLEAF_SMTP_USER}}
SHARELATEX_EMAIL_SMTP_PASS=${{OVERLEAF_SMTP_PASSWORD}}
12 changes: 12 additions & 0 deletions predefined-services/frontend/overleaf/service.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
image: sharelatex/sharelatex:${{OVERLEAF_VERSION}}
container_name: ${{PROJECT_NAME_CONTAINER}}-frontend-overleaf
restart: always
networks:
- overleaf-mongodb
- overleaf-redis
ports:
- ${{OVERLEAF_PORT}}:80
volumes:
- ${{VOLUME_OVERLEAF_DATA}}:/var/lib/sharelatex
env_file:
- environment.env

0 comments on commit 9e931a7

Please sign in to comment.