updog3 is a for of Sc0tfree's Updog tool, which was a replacement for Python's SimpleHTTPServer
.
It allows uploading and downloading via HTTP/S, can set ad hoc and custom SSL certificates, use HTTP basic auth, and disable upload and download functionality when required.
Installation from pypi
The easiest way:
pip install updog3
updog3 --version && updog3 -h
Installation from source with pipenv
You need Python3.12.
git clone https://github.com/felmoltor/updog3
cd updog3
pipenv install .
pipenv shell
which updog3
updog --version
After this, you do not use python setup.py install
as it has some errors that prevents copying the Flask templates and the server will not run. Use pipenv install .
instead to install updog as a module.
Docker
Use docker:
docker login ghcr.io -u <youruser>
docker pull ghcr.io/felmoltor/updog3:latest
docker tag ghcr.io/felmoltor/updog3:latest updog3
docker run updog3 -h
docker run -p 443:443 -v $(pwd)/transfer:/transfer -v /etc/letsencrypt/archive/yourdomain.com/:/certs/ updog3 -p 443 --ssl --cert /certs/cert1.pem /certs/privkey1.pem -d /transfer
Usage
updog3 [-d DIRECTORY] [-p PORT] [--password PASSWORD] [-i] [--ssl] [--cert certificate.pem key.pem] [--fullpath] [--upload [only, enabled, disabled]]
Argument | Description |
---|
-d DIRECTORY, --directory DIRECTORY | Root directory [Default=.] |
-p PORT, --port PORT | Port to serve [Default=9090] |
--password PASSWORD | Use a password to access the page. (No username) |
-i, --interface | IP address of the interface to listen |
-D, --createdir | Allow directory creation from the web interface |
--ssl | Enable transport encryption via SSL |
--cert | Provide your own certificate and key |
--upload | Select: only, enabled, disabled |
--fullpath | Display the full path of the folder uploading to |
--version | Show version |
-h, --help | Show help |
Examples
Serve from your current directory:
updog3
Serve from another directory:
updog3 -d /transfer
Serve from port 1234:
updog3 -p 1234
Password protect the page:
updog3 --password examplePassword123!
Please note: updog uses HTTP basic authentication.
To login, you should leave the username blank and just
enter the password in the password field.
Use an SSL connection:
updog3 --ssl
Use an SSL connection with custom certificates:
updog3 --ssl --cert /certs/certificate.pem /certs/key.pem
For a LetsEncrypt certificate, the files will be in /etc/letsencrypt/live/[domain]/cert.pem and /etc/letsencrypt/live/[domain]/privatekey.pem (careful, these are just links to ../../archive/ folder, so if you are copying those to another folder, ensure you copy the archive files.)
Modify upload/download functionality:
To allow only uploads:
updog3 --upload only
To allow only downloads:
updog3 --upload disabled
To allow uploads and downloads:
updog3 --upload enabled
(This is the default mode)
Thanks
To Sc0tfree, the original writer of Updog (https://github.com/sc0tfree/updog).
A special thank you to Nicholas Smith for designing the original updog logo. The updog3 logo is a poor attempt at updating it, sorry, Nicholas, I am not a designer 😭