All Projects → moshee → Airlift

moshee / Airlift

Licence: bsd-3-clause
A self-hosted file upload and sharing service

Programming Languages

go
31211 projects - #10 most used programming language

Projects that are alternatives of or similar to Airlift

Efo
EFO是一个基于SpringBoot和Vue构建的文件分享系统,包括文件的上传与下载,文件的权限管理,远程文件管理等功能。
Stars: ✭ 327 (+324.68%)
Mutual labels:  file-sharing, file-upload
Ffsend Api
📬 A fully featured Firefox Send API client written in Rust.
Stars: ✭ 75 (-2.6%)
Mutual labels:  file-sharing, file-upload
Uguu
Simple lightweight temporary file hosting.
Stars: ✭ 359 (+366.23%)
Mutual labels:  file-sharing, file-upload
Linx Server
Self-hosted file/code/media sharing website. ~~~~~~~~~~~~~~~~~~~ Demo: https://demo.linx-server.net/
Stars: ✭ 1,044 (+1255.84%)
Mutual labels:  file-sharing, file-upload
Ffsend
📬 Easily and securely share files from the command line. A fully featured Firefox Send client.
Stars: ✭ 5,448 (+6975.32%)
Mutual labels:  file-sharing, file-upload
Void
Fast and elegant file hosting service.
Stars: ✭ 48 (-37.66%)
Mutual labels:  file-upload, file-sharing
Slate
WIP - An open source Filecoin storage and retrieval client that makes it easy to collect, organize, and share data anywhere.
Stars: ✭ 383 (+397.4%)
Mutual labels:  file-sharing, file-upload
PiZilla
A lightweight, open-source file sharing web application for local networks.
Stars: ✭ 22 (-71.43%)
Mutual labels:  file-upload, file-sharing
Kodexplorer
A web based file manager,web IDE / browser based code editor
Stars: ✭ 5,490 (+7029.87%)
Mutual labels:  file-sharing, file-upload
Pomf
Simple file uploading and sharing
Stars: ✭ 535 (+594.81%)
Mutual labels:  file-sharing, file-upload
kipp
A flexible file storage server
Stars: ✭ 33 (-57.14%)
Mutual labels:  file-upload, file-sharing
Pomfe.co V1
Pomfe.co File Hosting Site Source Code
Stars: ✭ 31 (-59.74%)
Mutual labels:  file-sharing, file-upload
archivebot
💾 A telegram bot for backing up and collecting all kinds of media.
Stars: ✭ 65 (-15.58%)
Mutual labels:  file-upload, file-sharing
SimpleFS
Simple, Portable PHP File-Sharing
Stars: ✭ 1 (-98.7%)
Mutual labels:  file-upload, file-sharing
rustypaste
A minimal file upload/pastebin service.
Stars: ✭ 102 (+32.47%)
Mutual labels:  file-upload, file-sharing
Dropit
DropIt is a File Uploader built with nodejs, Upload, get a link, and share your files with anyone easily.
Stars: ✭ 367 (+376.62%)
Mutual labels:  file-sharing, file-upload
IPS-BitTracker
Bit Torrent Tracker application for IPS 4.5x Community Suite
Stars: ✭ 18 (-76.62%)
Mutual labels:  file-upload, file-sharing
lolisafe
Blazing fast file uploader and awesome bunker written in node! 🚀
Stars: ✭ 181 (+135.06%)
Mutual labels:  file-upload, file-sharing
Filestash
🦄 A modern web client for SFTP, S3, FTP, WebDAV, Git, Minio, LDAP, CalDAV, CardDAV, Mysql, Backblaze, ...
Stars: ✭ 5,231 (+6693.51%)
Mutual labels:  file-sharing, file-upload
Plik
Plik is a scalable & friendly temporary file upload system ( wetransfer like ) in golang.
Stars: ✭ 656 (+751.95%)
Mutual labels:  file-sharing, file-upload

Airlift 📦

Build Status

Airlift is a self-hosted file upload and sharing service. The clients upload files to the server and return a nice link for you to share. Just bring your own server and domain.

💣 This is unstable software. It is not feature-complete and has lots of bugs.

You should use deuiore/load.link instead of this if...

  • ...you like PHP;
  • ...you don't like me;
  • ...you're on a free/cheap shared host that doesn't allow long-running processes.

Clients

airliftd

airliftd is the Airlift server. You drop the server on any dedicated, VPS, shared host, whatever, as long as it supports running a binary and gives you access to ports or frontend server reverse proxying. A client sends files to it and recieves nice URLs to share. The server itself also provides a web-based client to upload files from, as well as manage existing uploads and customize some behaviors.

The server is packaged as a statically compiled binary with a few text assets with no system dependencies apart from maybe libc for networking. Just download (or clone and build), add to your init system of choice, and run.

You can choose to run it behind a frontend server or standalone.

Installing

If you just want a binary

Download a release from the GitHub Releases tab. Put the included binary wherever you want in your $PATH.

Or if you want to build it yourself

  1. Install Go and git
  2. If you don't already have a GOPATH: $ mkdir ~/go && export GOPATH=~/go (you can use any place as your GOPATH)
  3. $ go get ktkr.us/pkg/airlift/cmd/airliftd

I haven't tried to build or run it on Windows, YMMV. Works on macOS and GNU+Linux.

Updating

  1. Replace binary with new one.
  2. There is no step 2.

Usage

To run server:

$ airliftd

In development, you can pass the flag -rsrc . to instruct it to load files from disk rooted in the working directory.

The server runs in the console. You can use whatever tools you want to background it.

Command line options

Usage of airliftd:
  -debug
        Enable debug/pprof server
  -p int
        Override port in config (default -1)
  -rsrc DIR
        Look for static and template resources in DIR (empty = use embedded resources)
  -v    Show version and exit

Sample nginx config

server {
	listen 80;
	server_name i.example.com;
	location / {
		proxy_pass http://localhost:60606;

		# tell the proxied server its own host (not localhost)
		proxy_set_header Host $http_host;

		# tell the proxied server the remote host (not localhost either)
		proxy_set_header X-Forwarded-For $remote_addr;
	}
}

Configuration settings

When you start the server for the first time, it will generate a dotfolder in your home directory for local configuration. Visit http(s)://<yourhost>/config to set up a password and change other configuration parameters. On the first setup, an empty password will not be accepted.

If you manually edit the config file while the server is running, you should send the server process a SIGHUP to force a config reload.

If the server fails to start with a config error, you probably want to delete ~/.airlift-server/config and reconfigure from scratch.

Base URL []: The base URL that links will be returned on. This includes domain and path.

If you are proxying the server behind a frontend at a certain subdirectory, make sure you rewrite the leading path out of the request URL so that the URLs sent to airlift are rooted. Unfortunately, since URLs are rewritten, the redirecting behavior of /-/login and /-/config won't work properly, so you'll have to do your configuration on the internal port (60606 or whatever). Could use a meta redirect instead of internal redirect to fix this, but that doesn't play well with how sessions and stuff are set up in here.

Leaving the host field empty will cause the server to return whatever host the file was posted to.

Length of File ID [4]: Number of characters in subsequently generated file IDs. In general, more characters gives better collision characteristics (and are harder to guess).

Append File Extensions [off]: If enabled, links generated by the upload tool will end with the original file's extension, e.g. i.example.com/f9gW.zip instead of i.example.com/f9gW.

Limit Upload Age [off]: Enable this to automatically limit the maximum age of uploads by periodically pruning old uploads.

Max Age [0]: If Limit Upload Age is on, uploads older than this number of days will be automatically deleted.

Limit Total Uploads Size [off]: Enable this to automatically limit the size of the uploads folder on disk.

Max Size [0]: If Limit Total Uploads Size is on, the oldest uploads will be pruned on every new upload until the total size is less than this many megabytes.

Enable Twitter Cards [off]: If enabled, image uploads (which can be thumbnailed) will provide a Twitter Card preview when their URLs are mentioned in Tweets. This is achieved by serving an alternate page with relevant metadata for the file when the User-Agent of the visitor includes Twitterbot.

Twitter Handle []: Twitter Cards require that the Twitter handle of the source's creator is included in the metadata.

Syntax Highlighting [off]: Enable to serve text-based files with syntax highlighting. The raw file can be requested by appending ?raw=1 to the URL.

Syntax Theme []: Set the syntax highlighting color scheme.

Upload Directory [~/.airlift-server/uploads]: This is where uploaded files will be stored.

New Password []: Change your password here.

Confirm New Password []: Enter the new password again to confirm.

HTTPS

In order to use SSL/TLS standalone, set the following environment variables:

Variable Value
GAS_TLS_PORT The port for the secure server to listen on
GAS_TLS_CERT The path to your certificate
GAS_TLS_KEY The path to your key
GAS_PORT Optional: set this to -1 if you only want HTTPS, not regular HTTP.

If both HTTP and HTTPS are enabled, they will both serve from the same executable and HTTP requests will redirect to HTTPS.

Development

  • After making modifications to static assets, use go generate in cmd/airliftd to create the source files for them
  • After tagging a release, use cmd/airlift/gen_version.bash to create the source file with the tagged version
  • Build with go build
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].