144 lines
4.9 KiB
Markdown
144 lines
4.9 KiB
Markdown
|
|
# How to create a docker image for meshcentral
|
|
|
|
```
|
|
> git clone https://github.com/Ylianst/MeshCentral.git
|
|
> cd MeshCentral
|
|
|
|
> docker build -f docker/Dockerfile --force-rm -t meshcentral .
|
|
|
|
# alternative, if you want to include the mongodb-tools (mongodump, ...), you can add the 'INCLUDE_MONGODBTOOLS=yes' build argument
|
|
> docker build -f docker/Dockerfile --force-rm --build-arg INCLUDE_MONGODBTOOLS=yes -t meshcentral .
|
|
|
|
# (optional) cleanup after docker build:
|
|
> cd ..
|
|
> rm -rf MeshCentral/
|
|
```
|
|
|
|
> | Argument | Description |
|
|
> | :--- | :--- |
|
|
> | -f docker/Dockerfile | Path/Name of the Dockerfile |
|
|
> | --force-rm | Always remove intermediate containers |
|
|
> | -t meshcentral | Name and optionally a tag in the 'name:tag' format |
|
|
|
|
### Optional build arguments
|
|
> | Argument | Description |
|
|
> | :--- | :--- |
|
|
> | INCLUDE_MONGODBTOOLS=yes | Includes mongodb-tools (mongodump, ...) in the image |
|
|
> | DISABLE_MINIFY=yes | Disables the minification of files |
|
|
> | DISABLE_TRANSLATE=yes | Disables the translation of files |
|
|
|
|
# Create folder-structure and files
|
|
|
|
```
|
|
| - meshcentral/ # this folder contains the persistent data
|
|
| - data/ # MeshCentral data-files
|
|
| - user_files/ # where file uploads for users live
|
|
| - web/ # location for site customization files
|
|
| - backup/ # location for the meshcentral-backups
|
|
| - .env # environment file with initial variables
|
|
| - docker-compose.yml
|
|
```
|
|
|
|
# Templates:
|
|
## .env:
|
|
```ini
|
|
NODE_ENV=production
|
|
|
|
# initial mongodb-variables
|
|
MONGO_INITDB_ROOT_USERNAME=mongodbadmin
|
|
MONGO_INITDB_ROOT_PASSWORD=mongodbpasswd
|
|
|
|
# initial meshcentral-variables
|
|
# the following options are only used if no config.json exists in the data-folder
|
|
|
|
# your hostname
|
|
HOSTNAME=my.domain.com
|
|
USE_MONGODB=false
|
|
# set to your reverse proxy IP if you want to put meshcentral behind a reverse proxy
|
|
REVERSE_PROXY=false
|
|
REVERSE_PROXY_TLS_PORT=
|
|
# set to true if you wish to enable iframe support
|
|
IFRAME=false
|
|
# set to false if you want disable self-service creation of new accounts besides the first (admin)
|
|
ALLOW_NEW_ACCOUNTS=true
|
|
# set to true to enable WebRTC - per documentation it is not officially released with meshcentral, but is solid enough to work with. Use with caution
|
|
WEBRTC=false
|
|
# set to true to allow plugins
|
|
ALLOWPLUGINS=false
|
|
# set to true to allow session recording
|
|
LOCALSESSIONRECORDING=false
|
|
# set to enable or disable minification of json, reduces traffic
|
|
MINIFY=true
|
|
```
|
|
|
|
## docker-compose.yml:
|
|
```yaml
|
|
version: '3'
|
|
|
|
services:
|
|
meshcentral:
|
|
restart: always
|
|
container_name: meshcentral
|
|
image: meshcentral
|
|
ports:
|
|
# MeshCentral will moan and try everything not to use port 80, but you can also use it if you so desire, just change the config.json according to your needs
|
|
- 8086:443
|
|
env_file:
|
|
- .env
|
|
volumes:
|
|
# config.json and other important files live here. A must for data persistence
|
|
- ./meshcentral/data:/opt/meshcentral/meshcentral-data
|
|
# where file uploads for users live
|
|
- ./meshcentral/user_files:/opt/meshcentral/meshcentral-files
|
|
# location for the meshcentral-backups - this should be mounted to an external storage
|
|
- ./meshcentral/backup:/opt/meshcentral/meshcentral-backup
|
|
# location for site customization files
|
|
- ./meshcentral/web:/opt/meshcentral/meshcentral-web
|
|
```
|
|
|
|
## docker-compose.yml mongodb:
|
|
```yaml
|
|
version: '3'
|
|
|
|
networks:
|
|
meshcentral-tier:
|
|
driver: bridge
|
|
|
|
services:
|
|
mongodb:
|
|
restart: always
|
|
container_name: mongodb
|
|
image: mongo:latest
|
|
env_file:
|
|
- .env
|
|
volumes:
|
|
# mongodb data-directory - A must for data persistence
|
|
- ./meshcentral/mongodb_data:/data/db
|
|
networks:
|
|
- meshcentral-tier
|
|
|
|
meshcentral:
|
|
restart: always
|
|
container_name: meshcentral
|
|
image: meshcentral
|
|
depends_on:
|
|
- mongodb
|
|
ports:
|
|
# MeshCentral will moan and try everything not to use port 80, but you can also use it if you so desire, just change the config.json according to your needs
|
|
- 8086:443
|
|
env_file:
|
|
- .env
|
|
volumes:
|
|
# config.json and other important files live here. A must for data persistence
|
|
- ./meshcentral/data:/opt/meshcentral/meshcentral-data
|
|
# where file uploads for users live
|
|
- ./meshcentral/user_files:/opt/meshcentral/meshcentral-files
|
|
# location for the meshcentral-backups - this should be mounted to an external storage
|
|
- ./meshcentral/backup:/opt/meshcentral/meshcentral-backup
|
|
# location for site customization files
|
|
- ./meshcentral/web:/opt/meshcentral/meshcentral-web
|
|
networks:
|
|
- meshcentral-tier
|
|
```
|