2018-10-13 22:24:28 +00:00
2018-07-23 09:01:08 +00:00
# XBackBone 📤 [![Build Status](https://travis-ci.org/SergiX44/XBackBone.svg?branch=master)](https://travis-ci.org/SergiX44/XBackBone)
2018-05-01 16:44:28 +00:00
XBackBone is a simple, self-hosted, lightweight PHP backend for the instant sharing tool ShareX. It supports uploading and displaying images, GIF, video, code, formatted text, and file downloading and uploading. Also have a web UI with multi user management and past uploads history.
2018-04-28 12:20:07 +00:00
## Features
+ Supports every upload type from ShareX.
2018-10-14 12:15:34 +00:00
+ Code uploads syntax highlighting.
+ Video uploads player.
+ Files upload download page.
2018-11-19 18:10:04 +00:00
+ Multi language support.
2018-10-14 12:15:34 +00:00
+ User management, multi user features and roles.
2018-04-28 12:20:07 +00:00
+ Public and private uploads.
+ Web UI for each user.
+ Logging system.
2018-05-01 12:54:09 +00:00
+ Auto config generator for ShareX.
2018-10-14 12:15:34 +00:00
+ Share to Telegram.
2018-11-30 18:45:12 +00:00
+ Linux client tools supported via a custom script.
2018-04-28 12:20:07 +00:00
## How to Install
2018-11-13 17:56:28 +00:00
XBackBone require PHP >= `7.1` , writable storage path and PDO, with installed the required extensions (ex. `php-sqlite3` for SQLite, `php-gd` and `php-json` ).
2018-04-28 12:20:07 +00:00
2018-11-13 17:56:28 +00:00
### Web installation
2018-10-13 23:27:34 +00:00
+ ** [release, stable]** Download latest release from GitHub: [Latest Release ](https://github.com/SergiX44/XBackBone/releases/latest )
2018-10-13 23:28:06 +00:00
+ Extract the release zip to your document root.
2018-11-13 17:56:28 +00:00
+ Navigate to the webspace root (ex. `http://example.com/xbackbone` , this should auto redirect your browser to the install page `http://example.com/xbackbone/install/` )
+ Follow the instructions.
### Manual installation
+ ** [release, stable]** Download latest release from GitHub: [Latest Release ](https://github.com/SergiX44/XBackBone/releases/latest )
+ Extract the release zip to your document root.
+ Copy and edit the config file:
2018-04-28 12:20:07 +00:00
```sh
2018-11-13 17:56:28 +00:00
cp config.example.php config.php & & nano config.php
2018-04-28 12:20:07 +00:00
```
2018-10-14 12:17:25 +00:00
By default, XBackBone will use Sqlite3 as DB engine, and a `storage` dir in the main directory. You can leave these settings unchanged for a simple personal installation.
2018-10-14 12:15:34 +00:00
You must set the `base_url` , or remove it for get dynamically the url from request (not recommended).
2018-04-28 12:20:07 +00:00
```php
return [
2018-11-13 17:56:28 +00:00
'base_url' => 'https://example.com', // no trailing slash
2018-04-28 12:20:07 +00:00
'storage_dir' => 'storage',
'db' => [
'connection' => 'sqlite',
'dsn' => 'resources/database/xbackbone.db',
'username' => null, // username and password not needed for sqlite
'password' => null,
]
];
```
+ Finally, run the migrate script to setup the database
```sh
php bin/migrate --install
```
+ Now just login with `admin/admin` , **be sure to change these credentials after your first login** .
2018-10-13 22:34:49 +00:00
#### Changing themes
2018-11-13 17:56:28 +00:00
XBackBone supports all [bootswatch.com ](https://bootswatch.com/ ) themes.
From the web UI:
+ Navigate to the web interface as admin -> System Menu -> Choose a theme from the dropdown.
From the CLI:
2018-10-13 23:30:53 +00:00
+ Run the command `php bin/theme` to see the available themes.
+ Use the same command with the argument name (`php bin/theme < THEME-NAME > `) to choose a theme.
+ If you want to revert back to the original bootstrap theme, run the command `php bin/theme default` .
2018-10-13 22:34:49 +00:00
2018-11-17 22:35:58 +00:00
*Clear the browser cache once you have applied.*
#### Change app install name
Add to the `config.php` file an array element like this:
```php
return array(
'app_name' => 'This line will overwrite "XBackBone"',
...
);
```
## How to update
+ Download and extract the release zip to your document root, overwriting any file.
+ Navigate to the `/install` path (es: `http://example.com/` -> `http://example.com/install/` )
+ Click the update button.
+ Done.
2018-11-13 17:56:28 +00:00
2018-10-13 22:34:49 +00:00
#### Docker deployment
2018-10-13 22:24:28 +00:00
+ [Docker container ](https://hub.docker.com/r/pe46dro/xbackbone-docker )
2018-05-01 12:29:59 +00:00
## ShareX Configuration
Once you are logged in, just go in your profile settings and download the ShareX config file for your account.
2018-11-30 18:36:51 +00:00
## Linux Support
Since ShareX does not support Linux, XBackBone can generate a script that allows you to share an item from any tool:
+ Login into your account
+ Navigate to your profile and download the Linux script for your account.
+ Place the script where you want (ex. in your user home: `/home/<username>` ).
+ Add execution permissions (`chmod +x xbackbone_uploader_XXX.sh`)
+ Run the script for the first time to create the desktop entry: `./xbackbone_uploader_XXX.sh -desktop-entry` .
Now, to upload a media, just use the right click on the file > "Open with ..." > search XBackBone Uploader (XXX) in the app list.
You can use this feature in combination with tools like [Flameshot ](https://github.com/lupoDharkael/flameshot ), just use the "Open with ..." button once you have done the screenshot.
2018-11-30 18:44:05 +00:00
The script requires `xclip` , `curl` , and `notify-send` .
2018-11-30 18:36:51 +00:00
*Note: XXX is the username of your XBackBone account.*
2018-04-28 12:20:07 +00:00
## Notes
2018-04-28 12:24:13 +00:00
If you do not use Apache, or the Apache `.htaccess` is not enabled, set your web server so that the `static/` folder is the only one accessible from the outside, otherwise even private uploads and logs will be accessible!
2018-05-01 15:44:45 +00:00
The NGINX configuration should be something like this:
```
# nginx configuration
location /app {
return 403;
}
location /bin {
return 403;
}
location /bootstrap {
return 403;
}
location /resources {
return 403;
}
location /storage {
return 403;
}
location /vendor {
return 403;
}
location /logs {
return 403;
}
autoindex off;
location / {
if (!-e $request_filename){
rewrite ^(.*)$ /index.php break;
}
}
```
2018-11-19 20:56:19 +00:00
## Screenshots
< p align = "center" >
< img src = "https://i.imgur.com/zEHL5U3.png" width = "400" title = "Installation" >
< img src = "https://i.imgur.com/aNeMhaU.png" width = "400" title = "Login" >
< img src = "https://i.imgur.com/Sh1btnH.png" width = "400" title = "Admin view" >
< img src = "https://i.imgur.com/GN6a9AG.png" width = "400" title = "User management" >
< img src = "https://i.imgur.com/Cz6dkIP.png" width = "400" title = "User view" >
< img src = "https://i.imgur.com/nFu9waN.png" width = "400" title = "User profile page" >
< img src = "https://i.imgur.com/aQPDFDY.png" width = "400" title = "System settings" >
< img src = "https://i.imgur.com/2ZRd27y.png" width = "400" title = "Public image upload view" >
< / p >
2018-04-28 12:24:13 +00:00
## Built with
2018-11-19 18:10:04 +00:00
+ Slim 3, since `v2.0` (https://www.slimframework.com/)
+ FlightPHP, up to `v1.x` (http://flightphp.com/)
2018-04-28 12:24:13 +00:00
+ Bootstrap 4 (https://getbootstrap.com/)
+ Font Awesome 5 (http://fontawesome.com)
+ ClipboardJS (https://clipboardjs.com/)
+ HighlightJS (https://highlightjs.org/)
+ JQuery (https://jquery.com/)