Technic Solder is a server-side PHP application built using Laravel. Its main goal is to provide differential modpack updates for Technic Launcher. This can include any type of file. Another goal is to process file checksums to ensure the receiver is obtaining unaltered files.
Solder must be set up in a server that is always running and online.
If your Solder instance isn't reachable, your modpack won't be available.
If you run into any issues during the setup process, check the FAQs.
Need help with Technic Solder? Pop into our Technic Development Discord!
Before You Begin
You will need to setup your server with the appropriate software stack. Technic recommends a LEMP stack. This stands for Linux, (E)nginx, MariaDB, 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.4 recommended)
- BCMath, cURL, ctype, fileinfo, JSON, mbstring, OpenSSL, PDO, Redis, Tokenizer, XML and ZIP PHP extensions
- unzip
- Composer
- A MariaDB, MySQL or PostgreSQL database
For example, for Ubuntu 24.04:
# This command uses the PHP PPA: https://launchpad.net/~ondrej/+archive/ubuntu/php
LC_ALL=C.UTF-8 sudo add-apt-repository ppa:ondrej/php
sudo apt update
# If you're using Postgres, you'll want to replace php8.4-mysql with php8.4-pgsql
sudo apt install git unzip php8.4 php8.4-bcmath php8.4-cli php8.4-curl php8.4-fpm php8.4-mbstring php8.4-mysql php8.4-redis php8.4-xml php8.4-zip
Installing Composer
Solder uses Composer to manage PHP dependencies.
Install Composer using the official guide. Installing Composer globally is recommended.
If you already had Composer installed, ensure it's up-to-date: if it's installed locally, run php composer.phar self-update
; if it's installed globally, run sudo composer self-update
.
From this point on, this guide will assume that you installed Composer globally. Adjust the commands accordingly if you installed it locally.
Installing Solder
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 (cd TechnicSolder
), and install the application from the root of the solder folder:
composer install --no-dev --no-interaction
Note:
If want to help develop Solder, you can remove the
--no-dev
argument to install the development dependencies.
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.
There is one variable per line, and it has 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 MariaDB, this is mariadb . 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 to use local filesystem storage, 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 you set one. |
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 can cache the application's configuration, events, routes, and views, making Solder a bit faster, with the following command:
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!