Getting Started

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 nameDescription
APP_URLThe URL where Solder will be at (like https://solder.technicpack.net)
DB_CONNECTIONThe type of database you're using.
For MariaDB, this is mariadb. For MySQL, this is mysql. For PostgreSQL, this is pgsql".
DB_HOSTThe IP of your database server. This is 127.0.0.1 if you're running it on the same server.
DB_PORTYour database server port. 3306 for MySQL, 5432 for PostgreSQL.
DB_DATABASEThe name of your database.
DB_USERNAMEThe username to access your database.
DB_PASSWORDThe password to access your database.
CACHE_STOREWhere Solder will store temporary stuff. This can be file to use local filesystem storage, but redis (and having a Redis server) is recommended.
SESSION_DRIVERSame as CACHE_DRIVER, except for PHP sessions.
REDIS_HOSTIf you're using Redis, the IP of your Redis.
REDIS_PASSWORDThe password to your Redis, if you set one.
REDIS_PORTIf you're using Redis, your Redis port.
SOLDER_REPO_LOCATIONYour Solder repo location (see below)
SOLDER_MIRROR_URLYour Solder mirror URL (see below)
SOLDER_MD5_CONNECT_TIMEOUTThe 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 with https://.

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!