]> jfr.im git - uguu.git/blame - README.md
Update README.md
[uguu.git] / README.md
CommitLineData
295794b7 1# What is Uguu?
d8c46ff7 2
490235cd 3Uguu is a simple temporary file uploading and sharing platform where files get deleted after X amount of time.
d8c46ff7
GJ
4
5## Features
6
7- One click uploading, no registration required
8- A minimal, modern web interface
9- Drag & drop supported
10- Upload API with multiple response choices
11 - JSON
12 - HTML
13 - Text
14 - CSV
15- Supports [ShareX](https://getsharex.com/) and other screenshot tools
16
17### Demo
18
19See the real world example at [uguu.se](https://uguu.se).
67a54d5c 20
d8c46ff7 21## Requirements
e3fe8ee9 22
c54fa84e
GJ
23Original development environment is Nginx + PHP5.3 + SQLite, but is confirmed to
24work with Apache 2.4 and newer PHP versions like PHP7.3.
d8c46ff7
GJ
25
26## Install
27
28For the purposes of this guide, we won't cover setting up Nginx, PHP, SQLite,
29Node, or NPM. So we'll just assume you already have them all running well.
30
c88f7f7c 31**NPM/Node is only needed to compile the files, Uguu runs on PHP.**
8b70bc30 32
d8c46ff7
GJ
33### Compiling
34
35First you must get a copy of the uguu code. To do so, clone this git repo.
d8c46ff7
GJ
36```bash
37git clone https://github.com/nokonoko/uguu
e3fe8ee9
GJ
38```
39
92417970 40Assuming you already have Node and NPM working, compilation is easy.
d8c46ff7 41
b1aeae2c 42Run the following commands to do so, please configure `dist.json` before you compile.
d8c46ff7
GJ
43```bash
44cd uguu/
45make
d8c46ff7 46make install
e3fe8ee9 47```
d8c46ff7
GJ
48OR
49```bash
50make install DESTDIR=/desired/path/for/site
e3fe8ee9 51```
d8c46ff7
GJ
52After this, the uguu site is now compressed and set up inside `dist/`, or, if specified, `DESTDIR`.
53
54## Configuring
55
56Front-end related settings, such as the name of the site, and maximum allowable
57file size, are found in `dist.json`. Changes made here will
58only take effect after rebuilding the site pages. This may be done by running
59`make` from the root of the site directory.
e3fe8ee9 60
e0e11036 61Back-end related settings, such as database configuration, and path for uploaded files, are found in `includes/settings.inc.php`. Changes made here take effect immediately. Change the following settings:
4e2b7d35
GJ
62```php
63define('UGUU_DB_CONN', 'sqlite:/path/to/db/uguu.sq3');
64define('UGUU_FILES_ROOT', '/path/to/file/');
65define('UGUU_URL', 'https://subdomainforyourfiles.your.site');
66```
d8c46ff7
GJ
67
68If you intend to allow uploading files larger than 2 MB, you may also need to
69increase POST size limits in `php.ini` and webserver configuration. For PHP,
70modify `upload_max_filesize` and `post_max_size` values. The configuration
71option for nginx webserver is `client_max_body_size`.
72
29a5df75
GJ
73Edit checkdb.sh and checkfiles.sh to the proper paths:
74```bash
75sqlite3 /path/to/db/uguu.sq3 "DELETE FROM files WHERE date <= strftime('%s', datetime('now', '-1 day'));"
76```
77```bash
78find /path/to/files/ -mmin +1440 -exec rm -f {} \;
79```
80Then add them to your crontab:
3ffab18a
GJ
81```bash
820,30 * * * * bash /path/to/checkfiles.sh
830,30 * * * * bash /path/to/checkdb.sh
84```
85
86These scripts check if DB entries and files are older then 24 hours and if they are deletes them.
87
1f71d46c
GJ
88## MIME/EXT Blocking
89
e0e11036 90Blocking certain filetypes from being uploaded can be changed by editing the following settings in `includes/settings.inc.php`:
1f71d46c
GJ
91```php
92define('CONFIG_BLOCKED_EXTENSIONS', serialize(['exe', 'scr', 'com', 'vbs', 'bat', 'cmd', 'htm', 'html', 'jar', 'msi', 'apk', 'phtml']));
93define('CONFIG_BLOCKED_MIME', serialize(['application/msword', 'text/html', 'application/x-dosexec', 'application/java', 'application/java-archive', 'application/x-executable', 'application/x-mach-binary']));
94```
95
96By default the most common malicious filetypes are blocked.
97
d8c46ff7
GJ
98## Using SQLite as DB engine
99
100We need to create the SQLite database before it may be used by uguu.
101Fortunately, this is incredibly simple.
102
103First create a directory for the database, e.g. `mkdir /var/db/uguu`.
104Then, create a new SQLite database from the schema, e.g. `sqlite3 /var/db/uguu/uguu.sq3 -init /home/uguu/sqlite_schema.sql`.
105Then, finally, ensure the permissions are correct, e.g.
106```bash
853b7680 107chown www-data:www-data /var/db/uguu
d8c46ff7
GJ
108chmod 0750 /var/db/uguu
109chmod 0640 /var/db/uguu/uguu.sq3
a405e92a 110```
d8c46ff7 111
e0e11036 112Finally, edit `includes/settings.inc.php` to indicate this is the database engine you would like to use. Make the changes outlined below
d8c46ff7
GJ
113```php
114define('UGUU_DB_CONN', '[stuff]'); ---> define('UGUU_DB_CONN', 'sqlite:/var/db/uguu/uguu.sq3');
115define('UGUU_DB_USER', '[stuff]'); ---> define('UGUU_DB_USER', null);
116define('UGUU_DB_PASS', '[stuff]'); ---> define('UGUU_DB_PASS', null);
a405e92a 117```
118
d8c46ff7
GJ
119*NOTE: The directory where the SQLite database is stored, must be writable by the web server user*
120
9f88584e 121## Nginx example config
d8c46ff7 122
9f88584e
GJ
123I won't cover settings everything up, here are some Nginx examples. Use [Letsencrypt](https://letsencrypt.org) to obain a SSL cert.
124
125Main domain:
126```
127server{
128
1a56b2f4 129 listen 443 ssl http2;
9f88584e
GJ
130 server_name www.yourdomain.com yourdomain.com;
131
132 ssl on;
133 ssl_certificate /path/to/fullchain.pem;
134 ssl_certificate_key /path/toprivkey.pem;
92aa72c6 135 ssl_protocols TLSv1.2 TLSv1.3;
9f88584e
GJ
136
137 root /path/to/uguu/dist/;
138 autoindex off;
139 access_log off;
140 index index.html index.php;
141
142 location ~* \.(ico|css|js|ttf)$ {
143 expires 7d;
144 }
145
146 location ~* \.php$ {
25a798af 147 fastcgi_pass unix:/var/run/php/php7.3-fpm.sock;
35c5bfb2
GJ
148 fastcgi_intercept_errors on;
149 fastcgi_index index.php;
150 fastcgi_split_path_info ^(.+\.php)(.*)$;
151 include fastcgi_params;
152 fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
9f88584e 153 }
9f88584e 154}
3b00fd9c 155```
f88c30b8 156
9f88584e 157Subdomain serving files (do not enable PHP here):
f88c30b8 158```
9f88584e 159server{
1a56b2f4 160 listen 443 ssl http2;
9f88584e
GJ
161 server_name www.subdomain.serveryourfiles.com subdomain.serveryourfiles.com;
162
163 ssl on;
164 ssl_certificate /path/to/fullchain.pem;
165 ssl_certificate_key /path/to/privkey.pem;
92aa72c6
GJ
166 ssl_protocols TLSv1.2 TLSv1.3;
167
9f88584e
GJ
168 root /path/where/uploaded/files/are/stored/;
169 autoindex off;
170 access_log off;
171 index index.html;
172}
3b00fd9c 173```
9f88584e
GJ
174
175To redirect HTTP to HTTPS make a config for each domain like so:
176```
177server {
178 listen 80;
179 server_name www.domain.com domain.com;
180 return 301 https://domain.com$request_uri;
181}
3b00fd9c 182```
d8c46ff7 183
d501210d
GJ
184## API
185To upload using curl or make a tool you can post using:
36cfd3b8
GJ
186```
187curl -i -F files[]=@yourfile.jpeg https://uguu.se/upload.php (JSON Response)
188```
d501210d 189
d8c46ff7
GJ
190## Getting help
191
63cfe4f6 192Hit me up at [@nekunekus](https://twitter.com/nekunekus) or email me at neku@pomf.se
e3fe8ee9 193
d8c46ff7 194## Credits
67a54d5c 195
3c7dc6eb 196Uguu is based on [Pomf](http://github.com/pomf/pomf).
2239bd05 197
d8c46ff7 198## License
2239bd05 199
d8c46ff7
GJ
200Uguu is free software, and is released under the terms of the Expat license. See
201`LICENSE`.