Void/readme.md

4.4 KiB

A self-hosted file hosting service based on Zipline with many features.

Build stable Stars Version Last commit

I'm currently very busy so there's hardly any spare time for me to develop Void. As an alternative, try out Zipline, an actively developed file hosting service.

Requirements

  • node >= 14
  • PostgreSQL
  • Either yarn or npm

Installation / Deployment

git clone https://github.com/AlphaNecron/Void.git
cd Void
yarn install # or npm install
cp config.example.toml config.toml
nano config.toml # edit the config file
yarn build # or npm run build
yarn start # or npm start

Docker

git clone https://github.com/AlphaNecron/Void.git
cd Void
cp config.example.toml config.toml
nano config.toml # edit the config file
docker pull alphanecron/void:v0
docker run -p 3000:3000 -v $PWD/config.toml:/void/config.toml -d alphanecron/void:v0

Docker compose

git clone https://github.com/AlphaNecron/Void.git
cd Void
cp config.example.toml config.toml
nano config.toml # edit the config file
docker-compose up --build -d

Reverse proxy (nginx)

server {
    listen              443 ssl;
    server_name         your.domain;
    ssl_certificate     /path/to/cert;
    ssl_certificate_key /path/to/key;
    ssl_protocols       TLSv1 TLSv1.1 TLSv1.2;
    ssl_ciphers         HIGH:!aNULL:!MD5;
    client_max_body_size 100M;
    location / {
        proxy_pass http://localhost:3000;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

Config schema

[core]
secure = false # Whether to use https or not
secret = 'supersecretpassphrase' # The secret used to sign cookie
host = '0.0.0.0' # The host Void should run on
port = 3000 # The port Void should run on
database_url = 'postgres://username:password@localhost:5432/db_name' # PostgreSQL database url

[bot]
enabled = false # Whether to enable the bot or not
prefix = '&' # Bot's prefix
token = '' # Bot's token
admin = [''] # Admin ids
log_channel = '' # The channel where logs are sent, leave blank to disable logging
default_uid = 1 # The default user id used to shorten and upload
hostname = 'example.com' # The hostname shortened urls should use in Twilight

[shortener]
allow_vanity = true # Whether to allow vanity urls or not
length = 6 # Slug length
route = '/go' # Route to serve shortened urls

[uploader]
raw_route = '/r' # Route to serve raw contents
length = 6 # Slug length
directory = './uploads' # The directory where images are stored
max_size = 104857600 # Max upload size (users only), in bytes
blacklisted = ['exe'] # Blacklisted file extensions (users only)

Features

  • Configurable
  • Fast and reliable
  • Elegant Web UI
  • Built with Next.js & React
  • Token-protected uploading
  • Easy to setup
  • Invisible URL
  • Emoji URL
  • Text previewing (with syntax highlighting)
  • Video embed
  • URL shortener
  • Discord bot
  • Docker support
  • Password-protected URL
  • Embed customization (with variables)

Contribution

  • All pull requests must be made in dev branch, pull requests in v0 will be closed.

Default credentials

  • Username: admin
  • Password: voiduser

Bot permissions

These permissions are required for the bot to work properly (27712):

- Add reactions
- Read messages
- Send messages 
- Manage messages
- Embed links

Todo

  • Discord integration
  • Album / Bulk upload

Credits

  • Source code and API from diced/zipline
  • Logo and favicon from icons8