Code Monkey home page Code Monkey logo

amp-dockerized's Introduction

AMP-dockerized

This repository bundles CubeCoders AMP into a Debian-based Docker image. (mitchtalmadge/amp-dockerized:latest) so that you can set up game servers with ease!

In a nutshell, AMP (Application Management Panel) allows you to manage one or more game servers from a web UI. You need a CubeCoders AMP Licence to use this image.

Updates to AMP are automatically bundled into new Docker images. We check for updates every 15 minutes and package them up for you right away!

Please note: This is a community-made unofficial image, and is not endorsed by CubeCoders.

Getting Help

Please DO NOT bug CubeCoders for support without first asking here; they do not support nor endorse this image and will tell you that you are on your own.

If you need help with AMP when using this image, please create an issue and we will figure it out!

Unraid

If you are using Unraid, please check out this support topic made by one of our community members, @CorneliousJD!

Supported Modules

Tested and Working:

  • Factorio
  • McMyAdmin
  • Minecraft Java Edition
  • Minecraft Bedrock Edition
  • srcds (GMod, TF2, ...)
  • StarBound

Untested:

If you are able to get an untested module working, please make an issue about it so we can add it to the tested list and create an example docker-compose.yml config!

If you are not able to get a module working, make an issue and we can work together to figure out a solution!

Configuration

I recommend using Docker Compose to set up the image. Sample configurations are provided for each module in the example-configs directory in the GitHub repo.

MAC Address (Important! Please read.)

AMP is designed to detect hardware changes and will de-activate all instances when something significant changes. This is to stop people from sharing pre-activated instances and bypassing the licencing server. One way of detecting changes is to look at the MAC address of the host's network card. A change here will de-activate instances.

By default, Docker assigns a new MAC address to a container every time it is restarted. Therefore, unless you want to painstakingly re-activate all your instances on every server reboot, you need to assign a permanent MAC address.

For most people, this can be accomplished by generating a random MAC address in Docker's acceptable range. The instructions to do so are as follows:

  • Visit this page: https://miniwebtool.com/mac-address-generator/
  • Put 02:42:AC in as the prefix
  • Choose the format with colons :
  • Generate
  • Copy the generated MAC and use it when starting the container.
    • For docker run, use the following flag: (Substitute your generated MAC)

      --mac-address="02:42:AC:XX:XX:XX"

    • For Docker Compose, use the following key next to image:

      mac_address: 02:42:AC:XX:XX:XX

If you have a unique network situation, a random MAC may not work for you. In that case you will need to come up with your own solution to prevent address conflicts.

If you need help with any of this, please make an issue.

Ports

Here's a rough (and potentially incorrect) list of default ports for the various modules. Each module also exposes port 8080 for the Web UI (can be changed with environment variables). If you find an inaccuracy, open an issue!

Module Name Default Ports
ADS No additional ports.
ARK UDP 27015 & UDP 7777 & UDP 7778 (Guide)
Arma3 UDP 2302 to UDP 2306 (Guide)
Factorio UDP 34197 (Guide)
FiveM UDP 30120 & TCP 30120 (Guide)
Generic Completely depends on what you do with it.
JC2MP UDP 27015 & UDP 7777 & UDP 7778 (Unconfirmed!)
McMyAdmin TCP 25565
Minecraft TCP 25565 (Java) or UDP 19132 (Bedrock)
Rust UDP 28015 (Guide)
SevenDays UDP 26900 to UDP 26902 & TCP 26900 (Guide)
srcds Depends on the game. Usually UDP 27015. (List of games under srcds)
StarBound TCP 21025 (Guide)

Just a quick note about ports: some games use TCP, some games use UDP. Make sure you are using the right protocol. Don't fall into the trap of accidentally mapping a TCP port for a UDP game -- you won't be able to connect.

Environment Variables

Licence

Name Description Default Value
LICENCE The licence key for CubeCoders AMP. You can retrieve or buy this on their website. No Default. AMP will not boot without a real licence.

Important Details:

  • Americans: This is spelled licenCe not licenSe. Got me a few times.
  • When a McMyAdmin licence is provided, the one and only instance will be a Minecraft instance. This cannot be overridden; you must buy a new license to use AMP with other/multiple games.

Module

Name Description Default Value
MODULE Which Module to use for the main instance created by this image. ADS

To run multiple game servers under this image, use the default value of ADS (Application Deployment Service) which allows you to create various modules from the web ui.

To be clear, this Docker image creates ONE instance by default. If you want to create more, use ADS as the first instance, and create the rest with the web UI. Otherwise, you can pick any other module from the list.

Here are the accepted values for the MODULE variable:

Module Name Description
ADS Application Deployment Service. Used to manage multiple modules. Need multiple game servers? Pick this.
ARK
Arma3
Factorio
FiveM
Generic For advanced users. You can craft your own module for any other game using this. You're on your own here.
JC2MP Just Cause 2
McMyAdmin If you have a McMyAdmin Licence, this will be picked for you no matter what. It is equivalent to Minecraft.
Minecraft Includes Java (Spigot, Bukkit, Paper, etc.) and Bedrock servers.
Rust
SevenDays 7-Days To Die
srcds Source-based games like TF2, GMod, etc. Full List
StarBound

User/Group

Name Description Default Value
UID The ID of the user (on the host) who will own the ampdata volume. 1000
GID The ID of the group for the user above. 1000

When not specified, these both default to ID 1000; i.e. the first non-system user on the host.

Timezone

Name Description Default Value
TZ The timezone to use in the container. Pick from the "TZ database name" column on this page Etc/UTC

Example: TZ=America/Denver

Web UI

Name Description Default Value
PORT The port of the Web UI for the main instance. Since you can map this to any port on the host, there's hardly a reason to change it. 8080
USERNAME The username of the admin user created on first boot. admin
PASSWORD The password of the admin user. This value is only used when creating the new user. If you use the default value, please change it after first sign-in. password

Nightly Builds

Name Description Default Value
NIGHTLY Set to any value to enable nightly builds. All instances will be migrated to nightly builds on next image start. Unset this variable to go back to MainLine builds (stable releases). UNSET

Volumes

Mount Point Description
/home/amp/.ampdata Required! This volume contains everything AMP needs to run. This includes all your instances, all their game files, the web ui sign-in info, etc. Essentially, without creating this volume, AMP will be wiped on every boot.
/home/amp/scripts This volume allows you to provide custom scripts that will run at certain points during this container's lifecycle. See the section below about custom scripts.

Custom Scripts

If you would like to run your own shell scripts in this container, which can be useful to e.g. install extra dependencies for a game's plugin, you can use the /home/amp/scripts volume.

Currently, only one script is supported: startup.sh. Place a file named startup.sh into the volume, and it will be run on container startup.

Example: Installing extra packages

echo "Downloading dependencies for Valheim Plus Mod..."
apt-get update && \
apt-get install -y \
        libc6 \
        libc6-dev

HTTPS / SSL / TLS

Setting up HTTPS is independent of the Docker image. Just follow this official guide and when it tells you to access /home/AMP/.ampdata, access the volume you mapped on the host instead. It has the same contents. To restart the AMP instances, just restart the Docker container.

Or, just put CloudFlare and its free SSL cert in front of your web UI and save yourself hours of pain.

Upgrading AMP

To upgrade, all you have to do is pull our latest Docker image! We automatically check for AMP updates every hour. When a new version is released, we build and publish an image both as a standalone tag and on :latest.

Contributing

I welcome contributors! Just open an issue first, or post in one of the contibution welcome / help wanted issues, so that we can discuss before you start coding. Thank you for helping!!

amp-dockerized's People

Contributors

mitchtalmadge avatar joly0 avatar migushthe2nd avatar phonicuk avatar sahajjain01 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.