~yerinalexey/gobin

ref: f08e0a685761c332c039c028a9c1e4dd315289c8 gobin/README.md -rw-r--r-- 1.9 KiB
f08e0a68 — Alexey Yerin docs: add missing sudo 11 months ago

#GoBin

Simple self-hosted service for sharing text snippets

#Features

  • Totally anonymous, not even IP is logged
  • Dark theme by default
  • JavaScript-free
  • Easy to deploy

#Installation

Two basic requirements are Go compiler (unless you grab built binaries) and PostgreSQL database running.

#Database

Set DATABASE_URI environment variable to postgresql://-URI:

export DATABASE_URI=posgtresql://USER:PASSWORD@localhost/DB
  • USER is your username (postrges is default)
  • PASSWORD is your strong and complicated password
  • DB is your database name (make sure to run create database before running)

#Configuration

If you want to change port on which application is running, set PORT environment variable (4000 is default).

If your application is hosted not on localhost, you should change BASE_URL environment variable to http:// or https:// + your domain (e.g. https://somesite.dev)

export BASE_URL=https://somesite.dev
export PORT=80 # Note: you might need to run gobin as root

#Building

git clone https://git.sr.ht/~yerinalexey/gobin
cd gobin

go build

#Migrations

./gobin-migrate up

If something goes wrong, you can apply migrations manually by running up.sql files in subdirectories of ./migrations.

#Running

./gobin

It's also a good idea to run gobin binary as a system service. Make sure to provide all environment variables.

#Using systemd

# Copy templates and static files
sudo mkdir -p /usr/share/gobin
sudo cp -r templates static /usr/share/gobin

# Add SystemD unit
sudo cp -r ./contrib/systemd/gobin.service ./contrib/systemd/gobin.service.d /etc/systemd/system

# Edit /etc/systemd/system/gobin.service.d/environment.conf to set environment variables

# Install gobin itself
sudo install ./gobin /usr/local/bin

# Reload units and start gobin
sudo systemctl daemon-reload
sudo systemctl start gobin

#Using OpenRC

TODO: Write the service and this doc