Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
26 changes: 26 additions & 0 deletions .github/scripts/ci.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,16 +9,19 @@

import subprocess
import argparse
import platform
import pathlib
import secrets
import shutil
import copy
import json
import yaml
import sys
import os

CONTAINER_IMAGE = "ghcr.io/truenas/apps_validation:latest"
PLATFORM = "linux/amd64"
CHANGE_PLATFORM_FOR_IMAGES = ["valkey/valkey", "redis", "ghcr.io/euro-office/documentserver"]


# Used to print mostly structured data, like yaml or json
Expand Down Expand Up @@ -98,6 +101,21 @@ def command_exists(command):
return shutil.which(command) is not None


def replace_platform_in_service(svc):
if sys.platform != "darwin" or platform.machine() != "arm64":
return svc

svc_copy = copy.deepcopy(svc)
image = svc.get("image", "")
if not image:
print_stderr("No image found in service definition. Skipping platform replacement.")
sys.exit(1)
repo = image.split(":")[0]
if repo in CHANGE_PLATFORM_FOR_IMAGES:
svc_copy["platform"] = "linux/arm64"
return svc_copy


def check_required_commands():
required_commands = ["docker", "jq", "openssl"]
for command in required_commands:
Expand Down Expand Up @@ -175,6 +193,14 @@ def render_compose():
with open(template_file, "r") as f:
try:
out = yaml.safe_load(f)
# Replace platform on some known images that refuse to work on
# arm64 when platform is set to linux/amd64.
for svc_name, svc in out.get("services", {}).items():
new_svc = replace_platform_in_service(svc)
out["services"][svc_name] = new_svc
with open(template_file, "w") as f2:
yaml.dump(out, f2)

except yaml.YAMLError as e:
print_stderr(f"Failed to parse rendered docker-compose file [{e}]")
with open(template_file, "r") as f:
Expand Down
1 change: 1 addition & 0 deletions cspell.config.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -125,6 +125,7 @@ words:
- endmacro
- endswith
- esphome
- eurooffice
- evcc
- excalidraw
- factorio
Expand Down
3 changes: 3 additions & 0 deletions ix-dev/community/eurooffice-document-server/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
# EuroOffice Document Server

[EuroOffice](https://github.com/Euro-Office) - Your sovereign office
56 changes: 56 additions & 0 deletions ix-dev/community/eurooffice-document-server/app.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
app_version: v9.3.1-beta.1
capabilities:
- description: Eurooffice is able to change file ownership arbitrarily
name: CHOWN
- description: Eurooffice is able to bypass file permission checks
name: DAC_OVERRIDE
- description: Eurooffice is able to bypass permission checks for file operations
name: FOWNER
- description: Eurooffice is able to send signals to any process
name: KILL
- description: Eurooffice is able to change group ID of processes
name: SETGID
- description: Eurooffice is able to change user ID of processes
name: SETUID
categories:
- productivity
changelog_url: https://github.com/Euro-Office/DocumentServer/releases
date_added: '2026-06-04'
description: Your sovereign office
home: https://github.com/Euro-Office
host_mounts: []
icon: https://media.sys.truenas.net/apps/eurooffice-document-server/icons/icon.svg
keywords:
- document
- server
- office
lib_version: 2.3.6
lib_version_hash: 5067fd69a830797f96075fe2fe08aa41e2ec08d7c94cf5c6d6256690be7e06ae
maintainers:
- email: dev@truenas.com
name: truenas
url: https://www.truenas.com/
name: eurooffice-document-server
run_as_context:
- description: Container [eurooffice] runs as root user and group.
gid: 0
group_name: Host group is [root]
uid: 0
user_name: Host user is [root]
- description: Container [postgres] runs as non-root user and group.
gid: 999
group_name: Host group is [docker]
uid: 999
user_name: Host user is [netdata]
- description: Container [redis] can run as any non-root user and group.
gid: 568
group_name: Host group is [apps]
uid: 568
user_name: Host user is [apps]
screenshots: []
sources:
- https://apps.truenas.com/catalog/eurooffice-document-server_community/
- https://github.com/Euro-Office/DocumentServer
title: EuroOffice Document Server
train: community
version: 1.0.0
8 changes: 8 additions & 0 deletions ix-dev/community/eurooffice-document-server/item.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
categories:
- productivity
icon_url: https://media.sys.truenas.net/apps/eurooffice-document-server/icons/icon.svg
screenshots: []
tags:
- document
- server
- office
26 changes: 26 additions & 0 deletions ix-dev/community/eurooffice-document-server/ix_values.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
images:
image:
repository: ghcr.io/euro-office/documentserver
tag: v9.3.1-beta.1
container_utils_image:
repository: ixsystems/container-utils
tag: 1.0.2
postgres_18_image:
repository: postgres
tag: 18.4-trixie
redis_image:
repository: valkey/valkey
tag: 9.1.0
postgres_upgrade_image:
repository: ixsystems/postgres-upgrade
tag: 1.2.9

consts:
eurooffice_container_name: eurooffice
perms_container_name: permissions
redis_container_name: redis
postgres_container_name: postgres
db_user: eurooffice
db_name: eurooffice
ssl_key_path: /certs/tls.key
ssl_cert_path: /certs/tls.crt
Loading
Loading