WARNING: Droppy is out-of-date and not supported anymore! Development has stopped and the project has been archived!
Warning: Do not use droppy. I neither recommend nor actually use droppy anymore. For a minimalistic new file-hosting service you could use TinyFileManager (PHP). For a bigger solution use Nextcloud.
Droppy is a "google-drive"-like file server. You can drag and drop files into your browser to upload them to your server.
It is a good alternative for simple and static ftp servers that don't have an easily accessible upload/download interface.
It has less features than nextcloud. Droppy uses NodeJS, Nextcloud uses PHP.
It has basic authentication, but users can't have their own folders, every user sees every folder and file.
You can view Images in a gallery, listen to music straight from your browser and watch videos live from your browser without downloading it.
The github says that it's minimalistic and perfect for running on low hardware like a raspberry pi.
It runs on a raspberry pi zero w (single core ARM6) without any problems.
Link to github: https://github.com/silverwind/droppy
The main problem: Development is very slow, issues on github keep piling up without any of them being resolved. The Project is now archived!
Requirements: Have nodejs and npm installed (example: sudo apt-get install nodejs)
Now simply install droppy:
npm install -g droppyNow you can start it locally with droppy start -c /srv/droppy/config -f /srv/droppy/files, but it's better to create a user for it and start it via a system service.
useradd -r -s /bin/false -d /srv/droppy droppy mkdir -p /srv/droppy/config /srv/droppy/files chown -R droppy:droppy /srv/droppy chmod 755 /srv/droppyNow edit the file /etc/systemd/system/droppy.service and add the following to it:
[Unit] Description=droppy After=network.target [Service] ExecStart=/usr/bin/droppy start -c /srv/droppy/config -f /srv/droppy/files WorkingDirectory=/srv/droppy Environment="NODE_ENV=production" AmbientCapabilities=CAP_NET_BIND_SERVICE Restart=always User=droppy Group=droppy SyslogIdentifier=droppy StandardOutput=journal StandardError=journal [Install] WantedBy=multi-user.targetNow simply create the config, enable the service and start droppy:
sudo su droppy -c 'droppy --home /srv/droppy config' systemctl enable droppy systemctl start droppy
location /droppy/ { proxy_pass http://localhost:8989/; proxy_set_header Host $host; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection $http_connection; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Real-Port $remote_port; proxy_http_version 1.1; proxy_cache off; proxy_buffering off; proxy_redirect off; proxy_request_buffering off; proxy_ignore_client_abort on; proxy_connect_timeout 7200; proxy_read_timeout 7200; proxy_send_timeout 7200; client_max_body_size 0; }Then check the config via sudo nginx -t.