Technic Solder is a server-side PHP application based on the Laravel Framework. Its main goal is to provide differential updates for the Technic Launcher to process. This can include any type of file. Another goal is to process file check-sums to ensure the receiver is obtaining unaltered files.
Warning
This application is intended for experienced system administrators and is not intended to be setup on a local home computer.
If you run into any issues during the setup process, check the FAQ page
Need help with Technic Solder? Pop into our Technic Development Discord chat channel!
Before You Begin
You will need to setup your server with a proper software stack. Technic recommends a LEMP stack. This stands for Linux OS, (E)nginx web server, MySQL database server, and PHP.
No Windows Support
Running Solder on Windows is not supported and no help will be provided. You can try, but you're on your own.
Requirements
- Git
- PHP >= 8.2 (8.3 recommended)
- Unzip
- Composer - https://getcomposer.org/
- BCMath PHP extension
- cURL PHP extension
- Ctype PHP extension
- Fileinfo PHP extension
- JSON PHP extension
- Mbstring PHP extension
- OpenSSL PHP extension
- PDO PHP extension
- Redis PHP extension
- Tokenizer PHP extension
- XML PHP extension
- ZIP PHP extension
- A MySQL/MariaDB or PostgreSQL database
# This command uses the Ubuntu PHP PPA: https://launchpad.net/~ondrej/+archive/ubuntu/php
# If you're using Postgres, you'll want to replace php8.3-mysql with php8.3-pgsql
sudo apt install git unzip php8.3 php8.3-bcmath php8.3-cli php8.3-curl php8.3-fpm php8.3-mbstring php8.3-mysql php8.3-redis php8.3-xml php8.3-zip
Composer
Solder uses Composer. Composer is a tool for dependency management in PHP. It allows you to declare the dependent libraries your project needs and it will install them in your project for you.
Note:
When using the following guides, do not create your own composer.json file, or perform
composer install
orphp composer.phar install
commands. These are handled later in this Getting Started guide.
- Linux/Unix/Mac OS X: https://getcomposer.org/doc/00-intro.md#installation-linux-unix-osx
Note:
Installing Composer globally is recommended to ensure proper execution.
Before using Composer make sure to check for updates.
- If you installed Composer locally:
sudo php composer.phar self-update
- If you installed it globally:
sudo composer self-update
General Setup
You can setup Solder by cloning the GitHub repository and running a Composer command. Cloning the GitHub repository will create a folder called TechnicSolder
in the directory where you ran the command.
git clone https://github.com/TechnicPack/TechnicSolder.git
Note:
If you prefer the cloned directory to be named differently, append the name to the git command. (ex.
git clone https://github.com/TechnicPack/TechnicSolder.git <folder-name>
)
Now, change into the TechnicSolder folder, and install the application from the root of the solder folder.
- If you installed Composer locally:
php composer.phar install --no-dev --no-interaction
- If you installed it globally:
composer install --no-dev --no-interaction
Note:
If you cloned a development branch, you can remove the
--no-dev
argument to install development tools.
Configuring Solder
Now, we need to configure Solder. For that, Solder uses a .env
file, which specifies your environment configuration variables. Let's create one for us:
cp .env.example .env
Open the .env
file we just created in your favorite text editor.
Inside, there's a bunch of variables, some of which we'll need to change.
Variables are 1 per each line, and they have the format name=value
.
Look at the table below and change the variables to configure your Solder. You should leave any variables that aren't in this table with the values they already have.
Variable name | Description |
---|---|
APP_URL | The URL where Solder will be at (like https://solder.technicpack.net) |
DB_CONNECTION | The type of database you're using. For MySQL, this is "mysql". For PostgreSQL, this is "pgsql" |
DB_HOST | The IP of your database server. This is 127.0.0.1 if you're running it on the same server. |
DB_PORT | Your database server port. 3306 for MySQL, 5432 for PostgreSQL. |
DB_DATABASE | The name of your database. |
DB_USERNAME | The username to access your database. |
DB_PASSWORD | The password to access your database. |
CACHE_STORE | Where Solder will store temporary stuff. This can be "file", and it will store stuff as files, but "redis" (and having a Redis server) is recommended. |
SESSION_DRIVER | Same as CACHE_DRIVER, except for PHP sessions. |
REDIS_HOST | If you're using Redis, the IP of your Redis. |
REDIS_PASSWORD | The password to your Redis, if one is set. |
REDIS_PORT | If you're using Redis, your Redis port. |
SOLDER_REPO_LOCATION | Your Solder repo location (see below) |
SOLDER_MIRROR_URL | Your Solder mirror URL (see below) |
SOLDER_MD5_CONNECT_TIMEOUT | The remote MD5 timeout (see below) |
- Repo location: This points to the location of your repo files either locally or remotely. If your Solder install is on the same box as your mod repository, you can fill in the absolute path to those files. This will greatly increase the speed in which md5's are calculated for your database. If your mod repository is hosted elsewhere, you can simply put the web accessible URL in for this value. Make sure to include a trailing slash in both cases.
- Mirror URL: The mirror url is the web accessible url to your mod repository. If you are using a URL for your repo location you can just fill in the same value here.
- Remote MD5 timeout: This is the amount of time Solder will wait before giving up trying to calculate the MD5 checksum on a remote repo location.
Your Solder needs to have an application encryption key set so it can properly function. To do this, use the following command, which will automatically set generate a key for you and set it in .env
(under APP_KEY
):
php artisan key:generate
Platform API Keys are now handled through the application itself. See "Configure Solder -> API Key Management"
Database Configuration
You must create a database for Solder. The default name is "solder".
Instructions for setting up a database server and creating a database aren't provided in this guide, as they vary depending on which database server you're using.
Once your database connection is setup and working, Solder has a built in migration tool that creates all of the required tables and data required to get Solder up and running.
As Solder updates and changes, you will use this command to pull in any changes made to Solder tables/data structure. You must run this command now to set up the database.
"Application In Production!"
When running this command you will probably get a "Do you really wish to run this command?" prompt, because Solder is running in production mode. It's perfectly safe to answer "yes".
php artisan migrate
Web Server Configuration
Your final step is to make sure your web server is configured properly to handle traffic to Solder and its PHP files.
You should have already setup nginx (or Apache) and PHP following the guides provided above.
See the Example Web Server Configs page for examples in configuring your web server for Solder: Example Web Server configs
File Permissions
Your web server requires read access to the entire Solder folder. It also requires read & write access to the following directories:
/storage
/bootstrap/cache
Make sure you have the proper permissions set when before attempting to access Solder.
Reference: https://www.digitalocean.com/community/tutorials/an-introduction-to-linux-permissions
If you use HTTPS (you should), read this
About HTTPS and load balancers
If you're using HTTPS, you'll want to make sure your URL in
APP_URL
starts withhttps://
.If your Solder instance is behind a load balancer that terminates TLS/SSL connections (like Cloudflare), then you will need to configure your PHP-FPM with the HTTPS environment variable.
Optimize files
Laravel's optimize command caches the application's configuration, events, routes, and views, making Solder a bit faster.
php artisan optimize
Default Credentials
Once you have Solder configured, just access it at the URL you set it up on and log in.
The default user information is:
Credentials
Email: [email protected]
Password: admin
Change this information as soon as you log in!