Warning This release is not fully stable and may subject to major changes in the future.
Neutron is not ready for usage due to uncompleted features.
- node >= 16
- postgresql >= 14
- yarn >= 3
git clone https://github.com/AlphaNecron/Void.git --branch=v1
cd Void
yarn install # or npm install
cp config.example.json config.json
nano config.json # edit the config file
yarn prod # to build and start the production server
# or
yarn dev # to start the development servergit clone https://github.com/AlphaNecron/Void.git --branch=v1
cd Void
cp config.example.json config.json
nano config.json # edit the config file
docker pull alphanecron/void:v1
docker run -p 3000:3000 -v $PWD/config.json:/void/config.json -d alphanecron/void:v1git clone https://github.com/AlphaNecron/Void.git --branch=v1
cd Void
cp config.example.json config.json
nano config.json # edit the config file
docker-compose up --build -dserver {
    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;
    }
}{
  "void": {
    "useHttps": false,
    // Whether to enable HTTPS for URLs created returned by API.
    "host": "0.0.0.0",
    // The host Void should run on.
    "port": 3000,
    // The port Void should run on.
    "secret": "secretmin32characters",
    // The secret key used to hash cookies. (*)
    "rateLimit": 1200,
    // Rate limit for users per hour. (**)
    "defaultDomain": "http://localhost:3000",
    // The base domain used for multiple purposes.
    "databaseUrl": "postgres://postgres:postgres@postgres/postgres",
    // The Postgres database URL.
    "url": {
      "allowVanityUrl": true,
      // Whether to allow users to shorten with vanity URLs.
      "length": 6
      // The maximum length for URLs generated with shortener and uploader.
    },
    "discordProvider": {
      "clientId": "YOUR DISCORD CLIENT ID",
      // Discord client id, you can grab one in the Application dashboard.
      "clientSecret": "YOUR DISCORD CLIENT SECRET"
      // Discord client secret, you can grab one in the Application dashboard as well.
    },
    "upload": {
      "outputDirectory": "./uploads",
      // The directory to save uploaded files.
      "blacklistedExtensions": [
        ".zip",
        ".exe"
      ]
      // Prevent users from uploading files with certain extensions. (**)
    }
  },
  "neutron": {
    "enabled": false,
    // Whether to enable the Discord bot
    "token": "YOUR_DISCORD_BOT_TOKEN",
    // Your Discord bot token
    "clientId": "YOUR_DISCORD_APP_CLIENT_ID"
    // Your Discord bot client id
  }
}(*): If it is empty, a random key will be generated, otherwise, it must be at least 32 characters.
(**) Users with ADMINISTRATION permission or higher will not be affected by this.
- Configurable
- Fast with eye-catching UI
- Easy to install
- Embed customization
- Custom file viewer for texts, videos, images and audio files
- Multiple URL charsets (alphanumeric,emojiandinvisible)
- Comes with prebuilt Docker images
- Discord integration (Login with Discord)
- Open registration with referral codes
- Web upload with progress
- Dedicated Discord bot, mobile application as well as desktop application (WIP).
 and more...
- NextJS (Framework)
- ReactJS (Front-end)
- NodeJS (Back-end runtime)
- Mantine (UI library)
- Iron Session (Authentication)
- Prisma (ORM)
- PostgreSQL (Database)
- Yarn (Package manager)
- TypeScript (Programming language)
- v0 codebase from diced/zipline
- Logo and favicon from icons8
- Username: void
- Password: voiduser
