Skip to content
Snippets Groups Projects
Commit cc17bbd6 authored by jabertwo's avatar jabertwo
Browse files

gitea on testserver

parent 72c234d5
No related branches found
No related tags found
No related merge requests found
......@@ -19,11 +19,6 @@
roles:
- { role: common/cronapt, tags: cronapt }
- { role: common/docker, tags: docker }
# - {
# role: testserver/docker_dockerstats, tags: dockerstats,
# servicename: dockerstats,
# basedir: /srv/dockerstats
# }
- {
role: testserver/docker_traefik, tags: traefik,
servicename: traefik,
......@@ -31,25 +26,6 @@
domain: "test-warpzone.de",
domain_default: "www.test-warpzone.de",
}
# - {
# role: testserver/docker_dokuwiki, tags: dokuwiki,
# servicename: "dokuwiki",
# domain: "wiki.test-warpzone.de",
# basedir: /srv/dokuwiki,
# # healthchecks_url: "https://hc-ping.com/038adcfe-05bf-45b4-919b-88b69aab8844"
# }
# - {
# role: testserver/docker_gitlab, tags: gitlab,
# servicename: "gitlab",
# domain: "gitlab.test-warpzone.de",
# domain_registry: "gitlab-registry.test-warpzone.de"
# }
# - {
# role: testserver/docker_wordpress, tags: wordpress,
# servicename: "wordpress",
# basedir: /srv/wordpress,
# domain: "www.test-warpzone.de"
# }
- {
role: testserver/docker_mail, tags: test_mail,
servicename: mail,
......@@ -71,7 +47,12 @@
domain: "icinga.test-warpzone.de",
api_port: 5665,
mysql_port: 33306
}
}
- {
role: verwaltung/docker_gitea, tags: gitea,
servicename: "gitea",
domain: "verwaltung-git.test-warpzone.ms"
}
......
---
- include_tasks: ../functions/get_secret.yml
with_items:
- { path: /srv/shared/noreply_email_pass, length: -1 }
- name: create folder struct for dokuwiki
file:
path: "{{item}}"
state: "directory"
with_items:
- "{{ basedir }}"
- "{{ basedir }}/data"
- "{{ basedir }}/pdftemplate"
- name: Docker Compose Konfig-Datei erstellen
template:
src: "{{item}}"
dest: "{{ basedir }}/{{item}}"
with_items:
- docker-compose.yml
- Dockerfile
register: config
# - name: Cronjob für Mailversand Plenumsmail
# cron:
# name: "sendmail_plenum"
# weekday: "0"
# hour: "20"
# minute: "0"
# job: "/usr/bin/python3 {{ basedir }}/sendmail_plenum.py"
# disabled: false
- name: "stop {{ servicename}} docker"
community.docker.docker_compose_v2:
project_src: "{{ basedir }}"
state: absent
when: config.changed
- name: "start {{ servicename}} docker"
community.docker.docker_compose_v2:
project_src: "{{ basedir }}"
state: present
FROM php:8.3.2-apache-bookworm
# php-gd modul für dw2pdf plugin
RUN apt-get update && apt-get install -y \
libfreetype6-dev \
libjpeg62-turbo-dev \
libpng-dev \
&& docker-php-ext-configure gd --with-freetype --with-jpeg \
&& docker-php-ext-install -j$(nproc) gd
# Upload-Limits hoch setzen (Edit by Parad0x)
RUN touch /usr/local/etc/php/conf.d/uploads.ini \
&& echo "upload_max_filesize = 10M;" >> /usr/local/etc/php/conf.d/uploads.ini \
&& echo "post_max_size = 10M;" >> /usr/local/etc/php/conf.d/uploads.ini
# Configure LDAP.
RUN apt-get update \
&& apt-get install libldap2-dev -y \
&& docker-php-ext-configure ldap --with-libdir=lib/x86_64-linux-gnu/ \
&& docker-php-ext-install ldap
# Change apache settings
RUN a2enmod rewrite
# Expose ports
EXPOSE 80
# startup
CMD ["apache2-foreground"]
---
# Get secrets
- include_tasks: ../functions/get_secret.yml
with_items:
- { path: /srv/gitea/mysql_root_pw, length: 24 }
- { path: /srv/gitea/mysql_user_pw, length: 12 }
- name: create folder struct for gitea
file:
path: "{{item}}"
state: "directory"
owner: 1000
group: 1000
with_items:
- "/srv/gitea/db/"
- "/srv/gitea/data/"
- name: Konfig-Dateien erstellen
template:
src: "{{item}}"
dest: "/srv/gitea/{{item}}"
with_items:
- "docker-compose.yml"
- name: start gitea docker
community.docker.docker_compose_v2:
project_src: /srv/gitea/
state: present
version: "2.4"
services:
app:
image: gitea/gitea:1.21.4
restart: always
depends_on:
- db
ports:
- 444:444
volumes:
- /srv/gitea/data:/data
environment:
APP_NAME: "Warpzone Verwaltung"
RUN_MODE: "prod"
SSH_DOMAIN: "verwaltung-git.warpzone.ms"
SSH_PORT: "444"
ROOT_URL: "https://verwaltung-git.warpzone.ms"
HTTP_PORT: "42001"
USER_UID: "1000"
USER_GID: "1000"
DB_TYPE: "mysql"
DB_HOST: "db:3306"
DB_NAME: "gitea"
DB_USER: "gitea"
DB_PASSWD: "{{ mysql_user_pw }}"
labels:
- traefik.enable=true
- traefik.http.routers.{{ servicename }}.rule=Host(`{{ domain }}`)
- traefik.http.routers.{{ servicename }}.entrypoints=websecure
- traefik.http.services.{{ servicename }}.loadbalancer.server.port=42001
networks:
- default
- web
db:
image: mariadb:11.2.2
restart: always
volumes:
- /srv/gitea/db/:/var/lib/mysql
environment:
MYSQL_ROOT_PASSWORD: "{{ mysql_root_pw }}"
MYSQL_PASSWORD: "{{ mysql_user_pw }}"
MYSQL_DATABASE: "gitea"
MYSQL_USER: "gitea"
MARIADB_AUTO_UPGRADE: "1"
MARIADB_INITDB_SKIP_TZINFO: "1"
networks:
- default
networks:
web:
external: true
default:
driver: bridge
enable_ipv6: true
ipam:
driver: default
config:
# must be a ULA range
- subnet: fd00:dead:beef:444::/64
---
- include_tasks: ../functions/get_secret.yml
with_items:
- { path: /srv/shared/noreply_email_pass, length: -1 }
- { path: /srv/ldap/secret/ldap_readonly_pass, length: -1 }
- { path: /srv/gitlab/runner_registration_token, length: -1 }
# Benötigte Verzeichnisstrukturen erstellen
- name: create folder structur for gitlab
file:
path: "{{ item }}"
state: directory
owner: root
group: root
with_items:
- "/srv/gitlab/"
- "/srv/gitlab/conf/"
- "/srv/gitlab/data/"
- "/srv/gitlab/log"
- "/srv/gitlab/runner"
# Konfigurationsdateien erstellen
- name: Konfig-Datei Gitlab
template:
src: "{{ item }}"
dest: "/srv/gitlab/{{ item }}"
with_items:
- "conf/gitlab.rb"
- "docker-compose.yml"
register: configs
- name: stop gitlab docker
community.docker.docker_compose_v2:
project_src: /srv/gitlab/
state: absent
when: configs.changed
- name: start gitlab docker
community.docker.docker_compose_v2:
project_src: /srv/gitlab/
state: present
This diff is collapsed.
---
- include_tasks: ../functions/get_secret.yml
with_items:
- { path: /srv/shared/noreply_email_pass, length: -1 }
- { path: "{{ basedir }}/mysql_root_pass", length: 24 }
- { path: "{{ basedir }}/mysql_user_pass", length: 12 }
- name: "create folder struct for {{ servicename }}"
file:
path: "{{ item }}"
state: "directory"
owner: www-data
group: www-data
with_items:
- "{{ basedir }}/"
- "{{ basedir }}/config"
- "{{ basedir }}/data/"
- "{{ basedir }}/db/"
- "{{ basedir }}/data/wp-content/"
- "{{ basedir }}/data/wp-content/plugins"
- "{{ basedir }}/data/wp-content/plugins/wz-status/"
- name: create config file
template:
src: "{{ item }}"
dest: "{{ basedir }}/{{ item }}"
with_items:
- Dockerfile
- docker-compose.yml
- config/uploads.ini
- data/wp-content/plugins/wz-status/wz-status.php
register: config
- name: "stop {{ servicename }} docker"
community.docker.docker_compose_v2:
project_src: "{{ basedir }}"
state: absent
when: config.changed
- name: "start {{ servicename }} docker"
community.docker.docker_compose_v2:
project_src: "{{ basedir }}"
state: present
FROM wordpress:6.4.2-apache
# install the PHP extensions we need
RUN set -x \
&& apt-get update \
&& apt-get install -y libldap2-dev \
&& rm -rf /var/lib/apt/lists/* \
&& docker-php-ext-configure ldap --with-libdir=lib/x86_64-linux-gnu/ \
&& docker-php-ext-install ldap \
&& apt-get purge -y --auto-remove libldap2-dev
file_uploads = On
memory_limit = 64M
upload_max_filesize = 64M
post_max_size = 64M
max_execution_time = 600
<?php
/*
Plugin Name: WZ Status
Plugin URI: http://www.warpzone.ms
Description: This plugin adds a custom widget.
Version: 1.0
Author: Christian <void> Elberfeld
Author URI: http://www.warpzone.ms
License: GPL2
Original Source: https://github.com/wpexplorer/my-widget-plugin
*/
// The widget class
class WZ_Status_Widget extends WP_Widget {
// Main constructor
public function __construct() {
parent::__construct(
'wz_status_widget',
__( 'WZ Status Widget', 'text_domain' ),
array(
'customize_selective_refresh' => true,
)
);
}
// The widget form (for the backend )
public function form( $instance ) {
// Set widget defaults
$defaults = array(
'title' => '',
'api_url' => '',
);
// Parse current settings with defaults
extract( wp_parse_args( ( array ) $instance, $defaults ) ); ?>
<?php // Widget Title ?>
<p>
<label for="<?php echo esc_attr( $this->get_field_id( 'title' ) ); ?>"><?php _e( 'Widget Title', 'text_domain' ); ?></label>
<input class="widefat" id="<?php echo esc_attr( $this->get_field_id( 'title' ) ); ?>" name="<?php echo esc_attr( $this->get_field_name( 'title' ) ); ?>" type="text" value="<?php echo esc_attr( $title ); ?>" />
</p>
<?php // Api Url ?>
<p>
<label for="<?php echo esc_attr( $this->get_field_id( 'api_url' ) ); ?>"><?php _e( 'Api Url:', 'api_url' ); ?></label>
<input class="widefat" id="<?php echo esc_attr( $this->get_field_id( 'api_url' ) ); ?>" name="<?php echo esc_attr( $this->get_field_name( 'api_url' ) ); ?>" type="text" value="<?php echo esc_attr( $text ); ?>" />
</p>
<?php }
// Update widget settings
public function update( $new_instance, $old_instance ) {
$instance = $old_instance;
$instance['title'] = isset( $new_instance['title'] ) ? wp_strip_all_tags( $new_instance['title'] ) : '';
$instance['api_url'] = isset( $new_instance['api_url'] ) ? wp_strip_all_tags( $new_instance['api_url'] ) : '';
return $instance;
}
// Display the widget
public function widget( $args, $instance ) {
extract( $args );
// Check the widget options
$title = isset( $instance['title'] ) ? apply_filters( 'widget_title', $instance['title'] ) : '';
$api_url = isset( $instance['api_url'] ) ? $instance['api_url'] : '';
$zone_status = "UNBEKANNT";
$zone_status_text = "Unbekannt";
$zone_status_color = "#000000";
// WordPress core before_widget hook (always include )
echo $before_widget;
// Display the widget
echo '<div class="widget-text wp_widget_plugin_box">';
// Display widget title if defined
if ( $title ) {
echo $before_title . $title . $after_title;
}
// Zone Status abrufen
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => "https://api.warpzone.ms/statuswidget",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 3,
CURLOPT_TIMEOUT => 5,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET"
));
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
$zone_status = $err;
} else {
$responseObj = json_decode($response,true);
$zone_status = $responseObj['zone_door_status'];
if ($zone_status == "OPEN") {
$zone_status_text = "Offen";
$zone_status_color = "#00cc00";
}
if ($zone_status == "CLOSED") {
$zone_status_text = "Geschlossen";
$zone_status_color = "#cc0000";
}
}
// Anzeige Status im Widget
echo "<span style='font-weight: bold; color:" . $zone_status_color . ";'>" . $zone_status_text . "</span>";
// Status mit in die Menueleiste fuer Mobilgeraete
echo "<script type='text/javascript'>jQuery(document).ready(function() { jQuery('#mainnav-toggle').text('MENU | Status: " . $zone_status_text . "'); });</script>";
echo '</div>';
// WordPress core after_widget hook (always include )
echo $after_widget;
}
}
// Register the widget
function my_register_wz_status_widget() {
register_widget( 'WZ_Status_Widget' );
}
add_action( 'widgets_init', 'my_register_wz_status_widget' );
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment