Skip to content

Lekuruu/go-puush

Repository files navigation


go-puush is a go implementation of the puush file sharing service, providing file upload, sharing, and management capabilities.
The service consists of three main components:

  • API - Handles communication with the puush client
  • CDN - Serves uploaded files and thumbnails
  • Web Interface - Provides a web-based user interface, closely matching the original

A key advantage is the ease of use, as this project uses only Go and SQLite. No external dependencies are required!

Progress

The following features have been implemented or are planned for the future:

  • API
    • Authentication
    • Upload
    • History
    • Delete
    • Thumbnail
  • CDN
    • Serving uploaded files
    • Serving thumbnails
  • Web
    • Public pages (Home, Login, Register, About, ...)
    • Account page(s)
    • Gallery page
    • Login functionality
    • Logout functionality
    • Registration functionality
      • Registration
      • Email activation
      • Invite codes
    • Password reset functionality
    • Account page functionality
      • Move uploads
      • Delete uploads
      • Update default pool
      • Reset API key
      • Switch between views
      • Search for uploads
      • Change password
      • Username check
      • Username claiming
      • "Stop asking about my username"

Setup

Quick Start

If you want to quickly try out go-puush without setting up a development environment:

  1. Go to the GitHub Actions page
  2. Click on the latest successful workflow run
  3. Download the artifact for your platform
  4. Extract and run the binary

It will download all the required files off of GitHub automatically.

Development Setup

For development with hot reloading support:

  1. Install Air

    go install github.com/air-verse/air@latest
  2. Clone the repository

    git clone https://github.com/Lekuruu/go-puush.git
    cd go-puush
  3. Install dependencies

    go mod download
  4. Run with hot reloading

    air

    Air will automatically rebuild and restart the application when you make changes to the code.

Docker Compose

For a docker deployment, you can run the prebuilt container published to ghcr.io:

  1. Copy the example environment file and tweak it as needed:

    cp .example.env .env
  2. Create a docker-compose.yml file:

    services:
        puush:
            image: ghcr.io/lekuruu/go-puush:latest
            container_name: puush
            restart: unless-stopped
            env_file:
                - .env
            ports:
                - "${WEB_HOST}:${WEB_PORT}:${WEB_PORT}"
            volumes:
                - ./data:/app/.data
                - ./web:/app/web
  3. Start the stack:

    docker compose up -d

This setup won't require you to have the repository downloaded. The web directory will be populated automatically upon first launch, allowing you to edit web assets.

About

A replacement server for puush, written in go

Topics

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors 2

  •  
  •