Hikup
File Sharing Made Easy
-
File Management: Effortlessly upload, download, and remove files with just one command.
-
Secure Transfer: All data transfers between the client and server are encrypted to ensure data integrity and privacy. ( for the moment susceptible to man-in-the-middle attacks)
-
File Sharing in Three Simple Steps:
- Upload the desired file to the server and receive a unique hash and HTTP link.
- Share the generated hash or link with designated recipients.
- Recipients can use the hash to download the file directly from the server using the
hikupcommand or with HTTP.
-
Redundant servers: Sync between servers easily.
If you append ?view=yes to the HTTP link, you can view the file directly in the browser.
Client Commands
hikup: Display help information about the commands.hikup up <file> <server-address>: Upload a file.hikup down <file> <server-address>: Download a file.hikup rm <file> <server-address>: Remove a file.hikup ls <user> <pass> <server-address>: List all files (requires authentication).
Dependencies
Shared
cmake,libsodium,g++with c++23 support
Server
docker,docker-compose(optional)
Client
Build
git clone https://github.com/Hikari03/hikup.git && \
cd hikup && \
cmake -B build -S . && \
cmake --build build --target hikup -j $(nproc)
Usage
in hikup/build
./hikup # for help
Server
Settings
- All available runtime settings are in
settings/settings.tomlwith descriptions.
Sync
- Sync files between servers in declared periods.
- To use this, add target in settings in
[syncTargets]section.
The declared target will be the master in one case: if you uploaded a removed file and that removal synced. Which means if you again upload this file on non-master, your master will remove it on the next sync.
Default Ports
- Hikup protocol: 6998
- If you want to change it, you can do so in
server/ConnectionServer.cppandsrc/main.cpp
- If you want to change it, you can do so in
- HTTP protocol: 6997
- Can be changed in
settings/settings.json
- Can be changed in
When using docker, external ports can be mapped in docker-compose.yaml
Use Docker
With scripts
You can get the docker-update-start.sh, docker-attach.sh and docker-shutdown.sh.
With them, you can control the server with ease.
docker-update-start.shwill automatically update the image if needed and start the serverdocker-attach.shwill attach you to server console. When you want to exit console, useCTRL + P, CTRL + Q.docker-shutdown.shwill shutdown the container
Manually
- download the docker-compose.yml
docker compose up -dordocker-compose up -d- to control the server use
docker attach hikup-server docker compose downordocker-compose down
From Source
Build
git clone https://github.com/Hikari03/hikup.git && \
cd hikup && \
cmake -B build -S . && \
cmake --build build --target hikup-server -j $(nproc)
Usage:
in hikup/build
- once started type
qto stop the server
./hikup-server