Dropbox-like file server with modern web interface
Project description
Web File Storage
The Python package installs a cista
executable. Use hatch shell
to initiate and install in a virtual environment, or pip install
it on your system. Alternatively hatch run cista
may be used to skip the shell step but stay virtual. pip install hatch
first if needed.
Create your user account:
cista --user admin --privileged
Running the server
Serve your files on localhost:8000:
cista -l :8000 /path/to/files
The Git repository does not contain a frontend build, so you should first do that...
Build frontend
Frontend needs to be built before using and after any frontend changes:
cd frontend
npm install
npm run build
This will place the front in cista/wwwroot
from where the backend server delivers it, and that also gets included in the Python package built via hatch build
.
Development setup
For rapid turnaround during development, you should run npm run dev
Vite development server on the Vue frontend. While that is running, start the backend on another terminal hatch run cista --dev -l :8000
and connect to the frontend.
The backend and the frontend will each reload automatically at any code or config changes.
System deployment
Clone the repository to /srv/cista/cista-storage
or other suitable location accessible to the storage user account you plan to use. sudo -u storage -s
and build the frontend if you hadn't already.
Create /etc/systemd/system/cista@.service:
[Unit]
Description=Cista storage %i
[Service]
User=storage
WorkingDirectory=/srv/cista/cista-storage
ExecStart=hatch run cista -c /srv/cista/%i -l /srv/cista/%i/socket /media/storage/@%i/
TimeoutStopSec=2
Restart=always
[Install]
WantedBy=multi-user.target
This assumes you may want to run multiple separate storages, each having their files under /media/storage/<domain>
and configuration under /srv/cista/<domain>/
. Instead of numeric ports, we use UNIX sockets for convenience.
systemctl daemon-reload
systemctl enable --now cista@foo.example.com
systemctl enable --now cista@bar.example.com
Exposing this publicly online is the most convenient using the Caddy web server but you can of course use Nginx or others as well. Or even run the server with -l domain.example.com
given TLS certificates in the config folder.
/etc/caddy/Caddyfile:
foo.example.com, bar.example.com {
reverse_proxy unix//srv/cista/{host}/socket
}
Using the {host}
placeholder we can just put all the domains on the same block. That's the full server configuration you need. systemctl enable --now caddy
or systemctl restart caddy
for the config to take effect.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file cista-0.4.2.tar.gz
.
File metadata
- Download URL: cista-0.4.2.tar.gz
- Upload date:
- Size: 117.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: python-httpx/0.23.3
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | c13b15939256ecd340a2316d83862930673fa98af7de44eaab1f7460003bbead |
|
MD5 | 3622caf51e3fca6184ab45483580cd06 |
|
BLAKE2b-256 | 7958a0ac1d5514dacc77224438166d3a4902c18f6ad64e5aacdd50dbd38cca2b |
Provenance
File details
Details for the file cista-0.4.2-py3-none-any.whl
.
File metadata
- Download URL: cista-0.4.2-py3-none-any.whl
- Upload date:
- Size: 144.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: python-httpx/0.23.3
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 536dab8d6f5014a37380170cef26ea65019acb8d1be70b851c84559c3375d4b8 |
|
MD5 | 945f812bf2236c4a914fbc2aa7061653 |
|
BLAKE2b-256 | 61385065f8e6e97282eacdfdeb1cf510b3f9d4f5a20554cc5b7fa6f3af9290f2 |