An open API service indexing awesome lists of open source software.

https://github.com/jamesits/docker-ripe-atlas

This is the RIPE Atlas software probe packaged as a Docker image.
https://github.com/jamesits/docker-ripe-atlas

ripe-atlas

Last synced: 2 months ago
JSON representation

This is the RIPE Atlas software probe packaged as a Docker image.

Awesome Lists containing this project

README

        

# RIPE Atlas Docker Image

This is the [RIPE Atlas software probe](https://atlas.ripe.net/docs/getting-started/what-is-ripe-atlas) packaged as a Docker image.

![Works - On My Machine](https://img.shields.io/badge/Works-On_My_Machine-2ea44f)
![Project Status - Feature Complete](https://img.shields.io/badge/Project_Status-Feature_Complete-2ea44f)
[![Docker Image Version](https://img.shields.io/docker/v/jamesits/ripe-atlas?label=Docker%20Hub&sort=semver)](http://hub.docker.com/r/jamesits/ripe-atlas)

## Usage

### Requirements

* 1 CPU core (of course)
* 20MiB memory
* 100MiB HDD
* A Linux installation with Docker installed
* Internet access

### Tags

The following prebuilt tags are available at [Docker Hub](https://hub.docker.com/r/jamesits/ripe-atlas):

- `latest`, `latest-probe`, `latest-anchor`: latest stable version
- `v{version}`, `v{version}-probe`, `v{version}-anchor`: matches upstream version
- `edge`, `edge-probe`, `edge-anchor`: whatever from the master branch

Since version 5090, we do not provide `-{arch}` tags anymore.

### Running

You can run the container manually with any OCI container runtime of your choice. There are some templates:

#### Using [Docker Compose](https://docs.docker.com/compose/)

An example [`docker-compose.yaml`](/contrib/docker-compose/docker-compose.yaml) is provided.

```shell
cd contrib/docker-compose
docker compose pull
docker compose up -d
```

#### Using [`podman-systemd.unit`](https://docs.podman.io/en/latest/markdown/podman-systemd.unit.5.html)

```shell
install --user=root --group=root --target /etc/containers/systemd/ -- contrib/podman-quadlet/*.container
systemctl reload
systemctl start ripe-atlas.service
```

### Registering the Probe

Fetch the generated public key:

```shell
cat /etc/ripe-atlas/probe_key.pub
```

[Register](https://atlas.ripe.net/apply/swprobe/) the probe with your public key. After the registration being manually processed, you'll see your new probe in your account.

## Building

If you don't want to use the prebuilt image hosted on the Docker Hub, you can build your own image.

```shell
DOCKER_BUILDKIT=1 docker build --tag localhost/ripe-atlas:latest-probe --target ripe-atlas-probe .
```

Note that building this container image requires [BuildKit](https://docs.docker.com/develop/develop-images/build_enhancements/).

## Caveats

### IPv6

[Docker 27.0.1](https://github.com/moby/moby/releases/tag/v27.0.1) enabled IPv6 (incl. `ip6tables` and NATv6) by default.

If you are on older versions: Docker does not enable IPv6 by default. If you want IPv6 support, some level of setup and a basic understanding of IPv6 is required. Swarm mode & some Kubernetes implementation supports IPv6 too with extra configuration.

#### Using native address assignment

If you happened to have a block of static IPv6 addresses routed to your host, you can directly assign one of the addresses to the container. Edit `/etc/docker/daemon.json` and add native IPv6 address blocks, then restart the Docker daemon. An example:

```json
{
"ipv6": true,
"fixed-cidr-v6": "2001:db8:a1a3::/48"
}
```

Notes:
- These config work on Docker for Linux only
- If `daemon.json` exists, merge the config lines instead of directly overwriting it; if it doesn't exist, create it manually
- For more info, see [the official doc](https://docs.docker.com/config/daemon/ipv6/)

#### Using NAT (NPTv6)

If your ISP does not conform to [BCOP 690](https://www.ripe.net/publications/docs/ripe-690) (very common), and/or your router cannot route smaller blocks of IPv6 to one server even if it has been assigned a block of valid IPv6 addresses (also very common), the method above might not work for you. As a workaround, you can setup NAT with either [Docker's builtin experimental IPv6 NAT support](https://blog.iphoting.com/blog/2021/02/10/ipv6-docker-docker-compose-and-shorewall6-ip6tables/), `robbertkl/docker-ipv6nat` or similar projects. Manual iptables/nftables NAT setup is also possible, but *hanc marginis exiguitas non caperet*.

Firstly, edit kernel parameters to enable IPv6 routing.

```shell
cat > /etc/sysctl.d/50-docker-ipv6.conf <