1
0
forked from crony/UpFast

Compare commits

...

23 Commits
main ... mine

Author SHA1 Message Date
Raymaekers Luca
a4d9291ee3 use storage, with max size for upload dir 2023-04-11 12:27:09 +02:00
Raymaekers Luca
129101ac2e use arguments or variables 2023-04-11 12:25:32 +02:00
root
c3f133b211 Merge branch 'installation-fix' into mine 2023-04-05 14:16:17 +02:00
root
4d3cac8851 added error detection 2023-04-05 14:15:54 +02:00
root
574b7ce5f1 use id command instead of variable 2023-04-05 14:10:59 +02:00
Raymaekers Luca
3873729ae7 Merge branch 'readme' into mine 2023-04-05 13:36:00 +02:00
Raymaekers Luca
4342fa4a56 added updating to readme 2023-04-05 13:35:31 +02:00
Raymaekers Luca
aa1dff7015 Merge branch 'installation' into mine 2023-04-05 13:15:16 +02:00
Raymaekers Luca
e9563be67a fixed typo 2023-04-05 13:05:34 +02:00
Raymaekers Luca
3d1ba3bb5c use cronyakatsuk instead of craftmenners s: 2023-04-05 13:04:05 +02:00
Raymaekers Luca
69f19a1888 Merge branch 'installation' into mine 2023-04-05 13:01:12 +02:00
Raymaekers Luca
17c172a73d added loading for the nginx config 2023-04-05 12:59:48 +02:00
Raymaekers Luca
76963bcd88 removed the files' content from readme 2023-04-05 12:55:15 +02:00
Raymaekers Luca
1987a3fbef added install section to service 2023-04-05 12:54:52 +02:00
Raymaekers Luca
fb7b89a101 added daemon reload to install script 2023-04-05 12:54:38 +02:00
Raymaekers Luca
972f55f38d renamed upfast.sh to install.sh 2023-04-05 12:48:30 +02:00
Raymaekers Luca
a5df50f43c Merge branch 'installation' into mine 2023-04-04 18:53:40 +02:00
Raymaekers Luca
b376d91e21 extracted nginx conf into file 2023-04-04 18:52:14 +02:00
Raymaekers Luca
da70b22fdf added upfast.sh for quick install and upfast.service 2023-04-04 18:47:37 +02:00
Raymaekers Luca
7c593f2fc2 renamed venv to env 2023-04-04 18:46:26 +02:00
Raymaekers Luca
9f8afe5054 use italic font in <code> 2023-04-04 18:01:56 +02:00
Raymaekers Luca
edc99c3481 changed colors 2023-04-04 17:50:35 +02:00
Raymaekers Luca
8fdc68b441 fixed bold font 2023-04-04 16:24:53 +02:00
7 changed files with 102 additions and 78 deletions

2
.gitignore vendored
View File

@ -1,3 +1,3 @@
__pycache__
upload
venv
env

View File

@ -10,58 +10,25 @@ To run on a regular system I recommend to use a virtual environment to install t
We will also be setting up an specific user to run the app as safe as possible with a systemd service file for startup
#### Installing
```bash
# Create the user (You can specify a different home-dir)
sudo useradd --shell /bin/bash --system \
--home-dir "/usr/local/upfast" -m upfast
# Change to upfast user and go to upfast dir
su upfast
cd
# Clone the project directly into upfast-src directory
git clone https://code.cronyakatsuki.xyz/crony/upfast .
# Create the virtual environment and load it for user on default
python3 -m venv venv
# Activate the virtual environment
source venv/bin/activate
# Install all the requirements
pip install -r requirements.txt
# Load environment by default
echo "source /usr/local/upfast/venv/bin/activate" > "/usr/local/upfast/.profile"
# create the upload directory
mkdir upload
# UpFast go brrr
uvicorn main:app --host 127.0.0.1 --port 8000 --proxy-headers --forwarded-allow-ips='*'
./install.sh
```
#### Autostart with systemd
To autostart with systemd you will need to create a systemd .service file in path `/etc/systemd/system/upfast.service` and add this content to it.
```systemd
[Unit]
Description=UpFast service
Documentation=https://code.cronyakatsuki.xyz/crony/upfast
[Service]
User=upfast
Group=upfast
WorkingDirectory=/usr/local/upfast/
ExecStart=/usr/local/upfast/venv/bin/uvicorn main:app --host 127.0.0.1 --port 8000 --proxy-headers --forwarded-allow-ips='*'
Restart=on-failure
```
Finally run following commmands.
#### Running
```bash
# refresh services
sudo systemctl daemon-reload
# enable the service
sudo systemctl enable upfast.service
systemctl start upfast.service
```
#### Start on boot
```bash
systemctl enable upfast.service
```
#### Updating
To update, you only need to pull the changes
```bash
su upfast -c 'cd && git pull --no-rebase'
```
### Docker
@ -80,24 +47,14 @@ The sample command will need an upload directory, you can replace `./upload` wit
### Nginx Proxy setup
This is an example nginx proxy config for http
```bash
cp ./upfast-nginx /etc/nginx/sites-available/upfast
ln -sf /etc/nginx/sites-available/upfast /etc/nginx/sites-enabled/
```
```nginx
server {
listen 80;
listen [::]:80;
server_name upfast.example.com ;
location / {
proxy_pass http://127.0.0.1:8000;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_redirect off;
proxy_buffering off;
}
}
> Load config
```bash
systemctl reload nginx
```
# Contributions

39
install.sh Executable file
View File

@ -0,0 +1,39 @@
#!/bin/sh
# quick install (and run) script for upfast using systemd
if [ "$(id -u)" -ne 0 ]
then
echo "Please run as root"
exit 1
fi
SIZE="5G"
UFDIR=${1:=/srv/upfast}
USER=${1:=upfast}
useradd --shell /bin/sh --system --home-dir $UFDIR $UFUSER ||
exit 1
mkdir -p "$UFDIR" || # dodge copying of skeletons
exit 1
chown "$UFUSER:$UFUSER" "$UFDIR"
chmod 700 "$UFDIR"
su "$UFUSER" -c"
cd
git clone https://code.cronyakatsuki.xyz/tlast/upfast . ||
exit 1
python3 -m venv env
. ./env/bin/activate ||
exit1
pip install -r requirements.txt ||
exit 1
fallocate -l $SIZE storage
mkfs.ext4 storage
mount storage upload
rm -fd /storage/*" ||
exit 1
cp ./upfast.service /etc/systemd/system/upfast.service
systemctl daemon-reload

View File

@ -5,8 +5,7 @@ html {
body {
max-width: 900px;
margin: auto;
background: #303446;
color: #c6d0f5;
background: #81a1c1;
}
h1 {
@ -16,7 +15,7 @@ h1 {
hr {
margin: 40px;
color: #626880;
color: #2e3440;
}
img {
@ -34,9 +33,9 @@ video {
}
a {
color: #f2d5cf;
color: #ebcb8b;
text-decoration: none;
font-style: bold;
font-weight: bold;
padding: 5px;
}
@ -45,7 +44,7 @@ a:hover {
}
pre {
background: #292c3c;
background: #2e3440;
font-size: 1am;
padding: 10px;
max-width: 800;
@ -54,6 +53,7 @@ pre {
overflow-x: scroll;
border: none;
border-radius: 1rem;
color: #88c0d0;
}
.file {

View File

@ -1,8 +1,7 @@
body {
max-width: 900px;
margin: auto;
background: #303446;
color: #c6d0f5;
background: #81a1c1;
}
@ -12,9 +11,9 @@ h1 {
}
a {
color: #f2d5cf;
text-decoration: none;
font-style: bold;
color: #ebcb8b;
text-decoration: none;
font-weight: bold;
padding: 5px;
}
@ -23,8 +22,9 @@ a:hover {
}
code {
background: #414559;
background: #88c0d0;
border-radius: 10px;
font-size: 105%;
font-style: italic;
padding: 2px;
}

15
upfast-nginx Normal file
View File

@ -0,0 +1,15 @@
server {
listen 80;
listen [::]:80;
server_name upfast.example.com ;
location / {
proxy_pass http://127.0.0.1:8000;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_redirect off;
proxy_buffering off;
}
}

13
upfast.service Normal file
View File

@ -0,0 +1,13 @@
[Unit]
Description=UpFast service
Documentation=https://code.cronyakatsuki.xyz/crony/upfast
[Service]
User=upfast
Group=upfast
WorkingDirectory=/usr/local/upfast/
ExecStart=/usr/local/upfast/env/bin/uvicorn main:app --host 127.0.0.1 --port 8000 --proxy-headers --forwarded-allow-ips='*'
Restart=on-failure
[Install]
WantedBy=multi-user.target