Lightweight and easily self-hostable Git forge. git.poy.ooo
git-forge selfhosting homebrew
Something went wrong. Try again.
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758package main
import ( "fmt" "log" "net/http" "os" "strconv"
"farga/app" "farga/db" "farga/lib" "farga/ssh"
"github.com/joho/godotenv")
func loadEnv() { err := godotenv.Load() if err != nil { log.Println("\x1b[33mNo .env file found, using system env\x1b[0m") // orange then reset }
if os.Getenv("DOMAIN") == "" || os.Getenv("PORT") == "" || os.Getenv("CSRF_KEY") == "" || os.Getenv("SQLITE_PATH") == "" { log.Fatal("You're missing one (or more) required env vars: 'SQLITE_PATH, DOMAIN, PORT, CSRF_KEY'.") }
PORT, err := strconv.ParseUint(os.Getenv("PORT"), 10, 64) if PORT <= 0 || err != nil { log.Fatal("Invalid PORT env var.") }
lib.SetEnvVars(os.Getenv("DOMAIN"), uint(PORT), os.Getenv("DOMAIN"), os.Getenv("CSRF_KEY"))}
func main() { loadEnv() db, err := db.New() if err != nil { panic(err) }
go db.CleanupTicker()
app := app.New(db)
if lib.PORT == 0 || lib.DOMAIN == "" { // uint = 0 I'll interpret as invalid log.Fatal("Missing PORT or DOMAIN .env values. Make sure to set them properly.") }
go ssh.ServeSSH(db, lib.SSHPort) fmt.Printf("Serving website on http://%s:%v\n", lib.DOMAIN, lib.PORT) err = http.ListenAndServe(fmt.Sprintf(":%v", lib.PORT), app.Handler) if err != nil { panic(err) }}