Simple PHP, one file, no database, no external library to serve your backups and eshop games to Tinfoil and DBI.
I needed a light and fast php to create a repository for Tinfoil so that I could install backups without links. The two projects I found, however, were not able to manage a folder structure, which for some archives can also be articulated. I also didn't have any need to link to external GDrives or similar. If you want to use GDrive or other external link, please check other more feature rich, projets like https://github.com/ibnux/php-tinfoil-server
I then took a Raspberry to which I connected my usb HDD, and with this php I solved my problems.
- Cycles through all the files and folders in the given path and creates the json file to be provided to Tinfoil
- The first run it creates a json index cache file (write permission is needed), to avoid rescan all the files. The following times if the cache file exists this is provided, otherwise a new file is created
- Call the PHPinfoil.php with ?reset to delete and recreate the cache file
- No Database Needed
-
- Put all your games in a folder under the path served by your php webserver, they can be divided into subfolders
-
- Copy the PHPinfoil.php file to a folder (also the same folder of games) on the same http server, reachable by http clients
-
- Check that all your games have [TitleID] in the filename or Tinfoil won't show it in the list
-
- configure the parameters accordingly, see following Example
Tinfoil needs the TitleId in the file name. To correctly rename and reorganize yor collection you can use:
- https://github.com/giwty/switch-library-manager by @giwty
- https://github.com/gibaBR/Switch-Backup-Manager by @gibaBR
- Assuming your http server is serving at http://1.2.3.4:8080/
- Assuming the games are in /data/games folder of your http server
so they can be downloaded from http://1.2.3.4:8080/data/games/file[0100AD8015550000].nsp
or subfolders like http://1.2.3.4:8080/data/games/mybackup/file[0100AD8015550000].nsp - Assuming you put this php file in /php so can be reached at http://1.2.3.4:8080/php/index.php
- Assuming you have write permission on the /cache folder
- Assuming you want to list nsp, xci, nsz and xcz file types
Set parameters with this values:
$rootFolder = $_SERVER['DOCUMENT_ROOT'] . "/";
$Folder = "data/games";
$cacheFolder = "cache/";
$cacheFile = "mycache.json";
$arrExtensions = ['nsp','xci','nsz','xcz'];
in Tinfoil set a location to http://1.2.3.4:8080/php/
(the belows are quick examples, not intended for production environment)
- Follow this link to setup a nginx webserver and php: https://www.raspberrypi.org/documentation/remote-access/web-server/nginx.md
- Connect the usb hdd, open a terminal on your raspberry pi
- type
sudo fdisk -l
and find /dev/sdx that match your usb drive - type
sudo ls -l /dev/disk/by-uuid/
and find UUID related to your /dev/sdx usb drive (Needed in step 6) - type
sudo mkdir /var/www/html/php
and copy this index.php in the folder /var/www/html/php - type
sudo mkdir /var/www/html/cache
andsudo chmod 777 /var/www/html/cache
- type
sudo mkdir /var/www/html/games
to create a folder where to mount the usb drive - type
sudo nano /etc/fstab
and add this line at the endUUID=uuid_Found_In_Step2 /var/www/html/games auto uid=pi,gid=pi 0 0
- Reboot
- enter the address http://rpi.address.ip/php/ in Tinfoil as a new location or open in a web browser to check the resulting json.
- Install PHP 5 or greater for your system from https://www.php.net/downloads
- copy
PHPinfoil.php
in the folder where you store your games and rename it inindex.php
- open terminal/cmd/bash/whatever
- type
ipconfig
orifconfig
command to get your current ip address - cd into your game folder
- type
php -S 0.0.0.0:80
to start php webserver - set in Tinfoil a location to http://yourIp.at.step.4/
- close and reopen Tinfoil
- Assuming your http server is serving at http://1.2.3.4:8080/
- Assuming the games are in /data/games folder of your http server
Run:
docker run -d --rm -e HOST=1.2.3.4:8080 -v /data/games/:/var/www/html/data/games -p 8080:80 sbkg0002/phptinfoil:1
Build the image yourself:
git clone https://github.com/TheyKilledKenny/PHPinfoil.git
cd PHPinfoil
docker build -t phpinfoil .