Skip to content

Docker Installation

Emakin Docker images are published on Docker Hub at 6kare.

When the container starts for the first time, the documented default domain and admin user are created automatically:

Default access points:

  • Application Access: http://localhost
  • Host Administration: http://localhost:7180

Quick Start

Example command:

1
docker run -p 80:80 6kare/emakin:8.8

Docker Compose Configuration

Create a docker-compose.yml file similar to the following:

 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
services:
    web:
        image: 6kare/emakin:8.8
        ports:
            - "80:80"
            - "443:443"
            - "7180:7180"
            - "25:25"
            - "587:587"
            - "465:465"
        sysctls:
            - "net.ipv4.ip_unprivileged_port_start=0"
        depends_on:
            - dragonfly
            - postgre
            - basex
            - tika
        volumes:
            - "emkdata:/app/Configuration/Data"
        environment:
            - AK_DbProvider=PostgreSql
            - AK_DbConnStr=Host=postgre;Database=ALTIKARE;Username=ALTIKARE;Password=ALTIKARE;
            - AK_RedisConnStr=dragonfly,allowAdmin=true
            - AK_BasexConnStr=http://admin:admin@basex:1984/
            - AK_TikaConnStr=http://tika:9998/
            - AK_WopiConnStr=http://onlyoffice:81/hosting/discovery
            - AK_AntivirusServerUrl=tcp://clamav:3310
    postgre:
        image: "postgres"
        restart: always
        volumes:
            - "pgdata:/var/lib/postgresql/data"
        environment:
            - POSTGRES_USER=ALTIKARE
            - POSTGRES_PASSWORD=ALTIKARE
            - POSTGRES_DB=ALTIKARE
    dragonfly:
        image: docker.dragonflydb.io/dragonflydb/dragonfly
        container_name: dragonfly
        restart: always
        ports:
            - "6379:6379"
        ulimits:
            memlock: -1
    basex:
        image: "6kare/basex"
        expose:
            - "1984"
        volumes:
            - "basexdata:/srv/basex/data"
    tika:
        image: "6kare/tika2"
        restart: always
        expose:
            - 9998
    onlyoffice:
        image: onlyoffice/documentserver
        restart: always
        environment:
            USE_UNAUTHORIZED_STORAGE: "true"
            WOPI_ENABLED: "true"
        expose:
            - "81:80"
            - "8443:443"
    clamav:
        image: "clamav/clamav:latest"
        restart: always
        expose:
            - 3310
        volumes:
            - "clamavdata:/var/lib/clamav"

volumes:
    emkdata:
    pgdata:
    basexdata:
    clamavdata:

Replace placeholders such as credentials and hostnames with your actual environment values, then start the stack with docker compose up.

Environment Variables

The documented database environment variables are:

1
2
AK_DbProvider=PostgreSQL  # Or "Oracle", "SqlServer"
AK_DbConnStr=Host=databaseserver;Database=database;Username=user;Password=pass;

Load Balancer Example with HAProxy

The following example shows how an HAProxy service can be added for load balancing across multiple Emakin web nodes:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
#...previous services definition...
haproxy:
    image: haproxy:latest
    volumes:
        - "./haproxy.cfg:/usr/local/etc/haproxy:ro"
    restart: always
    ports:
        - "80:80"
        - "443:443"
        - "7180:7180"
        - "25:25"
        - "587:587"
        - "465:465"

#...rest of the configuration...

You also need a separate haproxy.cfg file. The documented sample is:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
frontend http
    bind *:80
    bind *:443
    bind *:5000
    mode http
    timeout client 1000s
    use_backend all

backend all
    mode http
    timeout server 1000s
    timeout connect 1000s
    server s1 web1:80
    server s2 web2:80
    server s3 web3:80

Adapt the sample to your actual hostnames, ports, and network layout.