]> 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
129 listen 443 ssl;
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;
135 ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
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$ {
147 fastcgi_pass unix:/var/run/php/php7.3-fpm.sock;
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;
153 }
154
155 error_page 404 /4041x.html;
156 error_page 403 /4041x.html;
157 location /4041x.html {
158 root /home/neku/www;
159 }
160}
3b00fd9c 161```
9f88584e
GJ
162Subdomain serving files (do not enable PHP here):
163ยดยดยด
164server{
165 listen 443 ssl;
166 server_name www.subdomain.serveryourfiles.com subdomain.serveryourfiles.com;
167
168 ssl on;
169 ssl_certificate /path/to/fullchain.pem;
170 ssl_certificate_key /path/to/privkey.pem;
171 ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
172
173 root /path/where/uploaded/files/are/stored/;
174 autoindex off;
175 access_log off;
176 index index.html;
177}
3b00fd9c 178```
9f88584e
GJ
179
180To redirect HTTP to HTTPS make a config for each domain like so:
181```
182server {
183 listen 80;
184 server_name www.domain.com domain.com;
185 return 301 https://domain.com$request_uri;
186}
3b00fd9c 187```
d8c46ff7 188
d501210d
GJ
189## API
190To upload using curl or make a tool you can post using:
36cfd3b8
GJ
191```
192curl -i -F files[]=@yourfile.jpeg https://uguu.se/upload.php (JSON Response)
193```
d501210d 194
d8c46ff7
GJ
195## Getting help
196
63cfe4f6 197Hit me up at [@nekunekus](https://twitter.com/nekunekus) or email me at neku@pomf.se
e3fe8ee9 198
d8c46ff7 199## Credits
67a54d5c 200
3c7dc6eb 201Uguu is based on [Pomf](http://github.com/pomf/pomf).
2239bd05 202
d8c46ff7 203## License
2239bd05 204
d8c46ff7
GJ
205Uguu is free software, and is released under the terms of the Expat license. See
206`LICENSE`.