Setup

There are two different ways to setup Gokapi: Either a bare metal approach or docker.

Also there are two different versions: Stable indicates that you are using the latest release which should work without any bugs. Unstable is the latest developer version, which might include more features, but could also contain bugs.

Installation

Bare Metal

Stable version

Download the project and copy the executable into a new folder with write permissions.

Unstable version

Only recommended if you have expierence with the command line. Go 1.16+ needs to be installed.

Create a new folder and in this folder execute

git clone https://github.com/Forceu/Gokapi.git .
go build Gokapi/cmd/gokapi

This will compile the source code and create an executable from the latest code.

Docker

To download, run the following command, and replace YOURTAG with either latest (stable) or latest-dev (unstable).

docker pull f0rc3/barcodebuddy-docker:YOURTAG

Most of the time, you will need the latest tag.

If you don’t want to download the prebuilt image, you can find the Dockerfile on the Github project page.

First Start

During the first start you will be asked several questions for the inital setup. To automate the setup, all questions can be preset with environment variables as well, see Environment variables

Starting Gokapi

Bare Metal

To start Gokapi, execute the binary with your command line or by double clicking.

Docker

To start the container, run the following command:

docker run -it -v gokapi-data:/app/data -v gokapi-config:/app/config -p 127.0.0.1:53842:53842 f0rc3/gokapi:latest

Please note the -it flag, which is needed if you are not populating all setup questions with environment variables.

With the argument -p 127.0.0.1:53842:53842 the service will only be accessible from the machine it is running on. In most usecases you will use a reverse proxy for SSL - if you want to make the service available to other computers in the network without a reverse proxy, replace the argument with -p 53842:53842. Please note, unless you select SSL during the setup, the traffic will not be encrypted that way and data like passwords and transferred files can easily be read by 3rd parties!

Initial Setup

During the first start, a new configuration file will be created. You will be asked questions for all required values that have not been populated with environment variables, see Environment variables

The following values are required:

Question

Expected Entry

Expected format

Default

Username

Username used for admin login (only user that can upload files)

string, min 4 characters

Password

Password used for admin login

string, min 6 characters

Server Port

The port Gokapi listens on

int, 0-65353, >1024 recommended

53842

External Server URL

The URL that will be used for generating Gokapi download links. Use an URL that users from an external network can use to reach Gokapi. For testing purposes you can use the default value

url, starting with http:// or https://

http://127.0.0.1:53842/

URL that the index gets redirected to

By default Gokapi redirects to another URL instead of showing a generic page if no download link was passed

url, starting with http:// or https://

https://github.com/Forceu/Gokapi/

Bind port to localhost only

If bound to localhost, Gokapi can only be accessed from the machine it runs on. Recommended to set to “yes” if you use a reverse proxy or run Gokapi for testing purposes.

“y”/”yes” or “n”/”no”

Yes

Use SSL

If set to “yes”, Gokapi will serve the content on the port with HTTPS. If no valid certificate is present in the config folder, a new one will be generated.

“y”/”yes” or “n”/”no”

No

Cloudstorage Setup

By default Gokapi uses local storage. You can also use external cloud storage providers for file storage. Please note that currently no native encryption is available for Gokapi, therefore all files will be stored in plain text on the cloud server.

AWS S3 / Backblaze B2

Provider setup

It is highly recommended to create a new bucket for Gokapi and set it to “private”, so that no file can be downloaded externally. For each download request Gokapi will create a public URL that is only valid for a couple of seconds, so that the file can be downloaded from the external server directly instead of routing it through the local server.

You then need to create an app key with read-/write-access to this bucket.

Local setup

It is recommended to pass the credentials as environment variables to Gokapi, see Environment variables. They can however also be loaded from a configuration file. You can find an example file here. Modify the values and copy it as cloudconfig.yml into your config folder.

The following values can be parsed:

Key

Description

Required

Example

Bucket

Name of the bucket in use

yes

gokapi

Region

Name of the region

yes

eu-central-1

KeyId

Name of the API key

yes

keyname123456789

KeySecret

Value of the API key secret

yes

verysecret123

Endpoint

Endpoint to use. Leave blank if using AWS S3.

only for Backblaze B2

s3.eu-central-001.backblazeb2.com