This repository contains the Server of the Timewarrior Sync project.
First you need to build the server:
go build -o timew-server
If you haven't already, create a folder named authorized_keys
in the same folder as your executable:
mkdir authorized_keys
Now you can start using your server:
./timew-server start
timew-sync-server
is included in Nixpkgs. To install
timew-sync-server
into your current environment, use:
nix-env -i timew-sync-server
Then, follow the instructions above (create a directory for the keys and start the server).
You can build a docker image using the provided Dockerfile
:
# Build a docker image tagged timew-server
docker build -t timew-server .
To start the server, use:
# Running from the docker image tagged timew-server
docker run -p 8080:8080 timew-server
# Start an existing docker container
docker start <container-id>
Subcommands can be used via docker exec
:
docker exec -it <container-id> server <subcommand>
Start the server using the start
subcommand:
./timew-server start
The start
subcommand supports the following (optional) flags:
--config-file
: (reserved, not used yet) Specifies the path to the configuration file--port
: Specifies the port. Default: 8080--keys-location
: Specifies the folder holding the authorized keys. Default:authorized_keys
--no-auth
: Deactivates client authentication. Only for testing purposes.--sqlite-db
: Path to the sqlite database. Default:db.sqlite
New users can be registered using the add-user
subcommand:
./timew-server add-user
If no additional flags are specified, this command will return the new user id.
The add-user
subcommand supports the following flags:
--path
: Specifies the path to a public key and associates it with the user.--keys-loaction
: Specifies the folder holding the authorized keys. Default:authorized_keys
Note: If you are running our provided Docker image, see the note under Adding keys to users
.
New keys can be added using the add-key
subcommand:
./timew-server add-key --path public-key.pem --id <user-id>
The add-key
subcommand supports the following flags:
--path
(required): Specifies the path to a public key and associates it with the user.--id
(required): Specifies the user id.--keys-location
: Specifies the folder holding the authorized keys. Default:authorized_keys
Note: If you are running the server inside a docker container, you have to copy the key into the container first:
# Copy the key into /public-key.pem
docker cp public-key.pem <container-id>:/public-key.pem
# Add the key
docker exec -it <container-id> server add-key --path /public-key.pem --id <user-id>
The code has to be formatted using go fmt
before commits. To enforce this, we provide a pre-commit-hook. It can be setup by copying it into to your .git/hooks/pre-commit
:
cp git/hooks/pre-commit .git/hooks/pre-commit
This project was developed during the so-called "Bachelorpraktikum" at TU Darmstadt. It was supervised by the Department of Biology, Computer-aided Synthetic Biology. For more information visit kabisch-lab.de.
This work was supported by the BMBF-funded de.NBI Cloud within the German Network for Bioinformatics Infrastructure (de.NBI) (031A532B, 031A533A, 031A533B, 031A534A, 031A535A, 031A537A, 031A537B, 031A537C, 031A537D, 031A538A).