Installing on Linux

Download ManicTime Server

Download ManicTimeServer.tar.gz file and extract it to some folder (or use Docker image).

Add admin to ManicTime Server

First you need to add admin user to the server. To do this, run ManicTime Server with:

./ManicTimeServer  addadmin -u <email> -p <password>

Run ManicTime Server

To start ManicTime Server simply type:

./ManicTimeServer

ManicTime Server should now be running. Visit http://localhost:8080/

[Optional] Other ManicTime Server settings

There are more ManicTime Server settings, for example:

  • which port it listens on
  • which database engine to use (database engine is described in next section)
  • ...

All settings are listed in file

/db/ManicTimeServerSettings.Sample.json

You can use just parts of this file. Make the changes in a new file, which should be named ManicTimeServerSettings.json and placed in subfolder /Data (if you are using Docker, put it in the folder which is mounted in container at /app/Data).

For example to change the port on which server listens on, this would be the contents of file /Data/ManicTimeServerSettings.json.

/Data/ManicTimeServerSettings.json

{
  "web": {
    "host": {
      "portNumber": 10000
    }
  }
}

[Optional] Using MS SQL or PostgreSQL for database

ManicTime Server needs a database to run. It supports three databases:

  • SQLite (default) - Use this one for small teams, up to 3 people.
  • PostgreSQL or Microsoft SQL Server - If you have more users, then you need to use either PostgreSQL or Microsoft SQL Server.

To use the PostgreSQL or Microsoft SQL Server in ManicTime Server:

  1. Create two databases on the server, one named ManicTimeServerCore and the other one named ManicTimeServerReports
  2. Create a user on the database server, which has access to both databases and which you will later use in connection string
  3. Download configuration file for:
  4. Edit the file and change the connection string. You need to change:
    • the IP of the server
    • username which will be used to access the database server and password
  5. Copy the file to where you extracted ManicTime Server, subfolder /Data. The file needs to be named ManicTimeServerSettings.json. If you already have this file, then you need to merge the two files (take a look at the previous section and sample file /db/ManicTimeServerSettings.Sample.json)
  6. The database is now empty, so again you need to create admin user one more time.

[Optional] Using HTTPS

ManicTime Server on Linux does not offer native SSL support, but you can still use SSL with reverse proxy. These settings are needed for reverse proxy:

Reverse proxy headers

Reverse proxy must be configured to forward following headers to ManicTime server:
X-Forwarded-Proto: <protocol> More info

X-Forwarded-Host: <host> More info

Example:

X-Forwarded-Proto: https  
X-Forwarded-Host: demo.manictime.com  

Trusting reverse proxy

ManicTime server only trusts forwarded headers by known proxies. By default, only loopback addresses are configured as known proxies (127.0.0.1). If reverse proxy has a different IP address, it needs to be configured in ManicTimeServerSettings.json using CIDR notation:

{
    "web": {
        "reverseProxy": {
            "addresses": [
                "<proxy ip address>"  
        
            ],
            "networks": [
                "<proxy network>"  
        
            ]
        }
    }
}  

Example 1: trust all proxies on all networks

{
    "web": {
        "reverseProxy": {
            "addresses": [  
                "*"
            ],
            "networks": [  
                "*" 
            ]
        }
    }
}  

Example 2: trust only proxies on a known IP address (IPv4 and IPv6)

{
    "web": {
        "reverseProxy": {
            "addresses": [
                "10.0.0.1",
                "::ffff:10.0.0.1" 
            ]
        }
    }
} 

Example 3: trust only proxies on a known network (IPv4 and IPv6)

{
    "web": {
        "reverseProxy": {
            "networks": [
                "10.244.0.0/16",
                "::ffff:10.244.0.0/16"
            ]
        }
    }
}  

Nginx

You can find more information on how to setup reverse proxy with Nginx here.

Troubleshooting

Problem 1: You get error 'Unknown error: invalid_request' when testing connection:

Solution 1: If you have configured redirects from http to https, make sure you are using temporary redirects (http status code 307) and not permanent redirects (http status code 301).

Still having problems?

Please send us ManicTime Server log files:

  • on Linux, in folder where ManicTimeServer executable is, subfolder Data/Logs.
  • on Docker, please send us Docker log files and ManicTime Server log files (where Data folder is, subfolder Logs)

Connecting ManicTime clients

Chances are, you installed ManicTime Server on a machine within your network somewhere. So any device on the network can now connect to it. Local network addresses usually start with 192.16*... Just use the correct ip:port and it should be accessible from any device on the same network.

If you want to connect from a device which is outside of your network, then you need to configure port forwarding or use some other way, so that the machine is visible outside of your network. (try googling "port forward < router model>" to see how to enable port forwarding on your router).

Making a connection from ManicTime manually

Before you try connecting from any ManicTime Client, first open a browser on that device and try to open a ManicTime Server web page. Once you have successfully connected to ManicTime Server, proceed with creating a connection from ManicTime Client.

On Windows, you can also deploy ManicTime via Group policy

How to deploy ManicTime with preconfigured settings

If you have any problems or questions, please send an email to support@manictime.com

Could not connect to server. Reload