mirror of
https://github.com/kevinveenbirkenbach/computer-playbook.git
synced 2025-04-28 18:30:24 +02:00
Compare commits
No commits in common. "9a6c835244703b89c6ef15fa8c50e8ae7892d13f" and "c2975262eaa2b1b7cf67f32eb5fe4747860c4cd3" have entirely different histories.
9a6c835244
...
c2975262ea
@ -117,15 +117,6 @@ run:
|
||||
- exec: rails r "SiteSetting.enable_local_logins = false"
|
||||
- exec: rails r "SiteSetting.enable_passkeys = false" # https://meta.discourse.org/t/passwordless-login-using-passkeys/285589
|
||||
|
||||
- exec: rails r "SiteSetting.username_change_period = 0" # Deactivate changing of username
|
||||
|
||||
# Activate Administrator User
|
||||
#- exec: printf '{{administrator_email}}\n{{administrator_initial_password}}\n{{administrator_initial_password}}\nY\n' | rake admin:create
|
||||
#- exec: rails r "User.find_by_email('{{administrator_email}}').update(username: '{{administrator_username}}')"
|
||||
|
||||
# The following code is just an inspiration, how to connect with the oidc account. as long as this is not set the admini account needs to be manually connected with oidc
|
||||
# docker exec -it discourse_application rails runner "user = User.find_by_email('test@flock.town'); UserAuth.create(user_id: user.id, provider: 'oidc', uid: 'eindeutige_oidc_id', info: { name: user.username, email: user.email })"
|
||||
|
||||
# OIDC Activation
|
||||
- exec: rails r "SiteSetting.openid_connect_enabled = true"
|
||||
- exec: rails r "SiteSetting.openid_connect_discovery_document = '{{oidc.client.discovery_document}}'"
|
||||
|
@ -13,6 +13,24 @@ The role integrates Keycloak with PostgreSQL as a database and supports operatio
|
||||
- Support for running behind a reverse proxy (e.g., NGINX).
|
||||
- Automatic creation and management of Docker Compose files.
|
||||
|
||||
## Requirements 📋
|
||||
- Docker and Docker Compose must be installed on the target system.
|
||||
- A working NGINX proxy for forwarding requests to Keycloak (optional).
|
||||
|
||||
## Tasks 🛠️
|
||||
|
||||
The role performs the following main tasks:
|
||||
|
||||
1. **Include database and proxy configuration files:**
|
||||
- Integration of a PostgreSQL database.
|
||||
- Setup of a reverse proxy for the domain.
|
||||
|
||||
2. **Generate `docker-compose.yml`:**
|
||||
- Automatically generate the Docker Compose file based on templates and variables.
|
||||
|
||||
3. **Start Docker containers:**
|
||||
- The role launches the Keycloak project using Docker Compose.
|
||||
|
||||
## More Information 📚
|
||||
|
||||
For more details about Keycloak, check out:
|
||||
|
@ -15,8 +15,4 @@ KEYCLOAK_ADMIN_PASSWORD= "{{applications.keycloak.administrator_password}
|
||||
KC_DB= postgres
|
||||
KC_DB_URL= jdbc:postgresql://{{database_host}}/{{database_name}}
|
||||
KC_DB_USERNAME= {{database_username}}
|
||||
KC_DB_PASSWORD= {{database_password}}
|
||||
|
||||
# If the initial administrator already exists and the environment variables are still present at startup, an error message stating the failed creation of the initial administrator is shown in the logs. Keycloak ignores the values and starts up correctly.
|
||||
KC_BOOTSTRAP_ADMIN_USERNAME= {{administrator_username}}
|
||||
KC_BOOTSTRAP_ADMIN_PASSWORD= {{administrator_initial_password}}
|
||||
KC_DB_PASSWORD= {{database_password}}
|
@ -22,8 +22,8 @@
|
||||
- name: flush docker service
|
||||
meta: flush_handlers
|
||||
|
||||
- name: create administrator account
|
||||
- name: execute database migration
|
||||
command:
|
||||
cmd: "docker compose -p mailu exec admin flask mailu admin {{administrator_username}} {{primary_domain}} {{applications.mailu.initial_administrator_password}}"
|
||||
cmd: "docker compose -p mailu exec admin flask mailu admin admin {{primary_domain}} {{applications.mailu.initial_administrator_password}}"
|
||||
chdir: "{{docker_compose.directories.instance}}"
|
||||
ignore_errors: true
|
||||
ignore_errors: true
|
@ -2,18 +2,12 @@
|
||||
# @see https://chatgpt.com/share/67b9b12c-064c-800f-9354-8e42e6459764
|
||||
|
||||
- name: Remove line containing "- administrator" from config/settings.yml to allow creating administrator account
|
||||
command:
|
||||
cmd: "docker compose exec -u root web sed -i '/- administrator/d' config/settings.yml"
|
||||
chdir: "{{docker_compose.directories.instance}}"
|
||||
shell: docker compose exec -u root web sed -i '/- administrator/d' config/settings.yml
|
||||
when: administrator_username == "administrator"
|
||||
|
||||
- name: Create admin account via tootctl
|
||||
command:
|
||||
cmd: 'docker compose exec -u root web bash -c "RAILS_ENV=production bin/tootctl accounts create {{administrator_username}} --email {{administrator_email}} --confirmed --role Owner"'
|
||||
chdir: "{{docker_compose.directories.instance}}"
|
||||
shell: 'docker compose exec -u root web bash -c "RAILS_ENV=production bin/tootctl accounts create {{administrator_username}} --email {{administrator_email}} --confirmed --role Owner"'
|
||||
ignore_errors: true
|
||||
|
||||
- name: Approve the administrator account in Mastodon
|
||||
command:
|
||||
cmd: docker compose exec -u root web bash -c "RAILS_ENV=production bin/tootctl accounts modify {{administrator_username}} --approve"
|
||||
chdir: "{{docker_compose.directories.instance}}"
|
||||
shell: docker compose exec -u root web bash -c "RAILS_ENV=production bin/tootctl accounts modify {{administrator_username}} --approve"
|
||||
|
@ -50,56 +50,40 @@ HINT:
|
||||
|
||||
/* Bootstrap Overrides (Color/Shadow Variables Only) */
|
||||
:root {
|
||||
--bs-black: var(--color-01); /* Original tone: Black (#000) */
|
||||
--bs-white: var(--color-99); /* Original tone: White (#fff) */
|
||||
--bs-gray: var(--color-50); /* Original tone: Gray (#6c757d) */
|
||||
--bs-gray-dark: var(--color-20); /* Original tone: Dark Gray (#343a40) */
|
||||
--bs-gray-100: var(--color-95); /* Original tone: Very Light Gray (#f8f9fa) */
|
||||
--bs-gray-200: var(--color-90); /* Original tone: Lighter Gray (#e9ecef) */
|
||||
--bs-gray-300: var(--color-85); /* Original tone: Light Gray (#dee2e6) */
|
||||
--bs-gray-400: var(--color-80); /* Original tone: Gray (#ced4da) */
|
||||
--bs-gray-500: var(--color-70); /* Original tone: Medium Gray (#adb5bd) */
|
||||
--bs-gray-600: var(--color-50); /* Original tone: Gray (#6c757d) */
|
||||
--bs-gray-700: var(--color-40); /* Original tone: Darker Gray (#495057) */
|
||||
--bs-gray-800: var(--color-20); /* Original tone: Dark Gray (#343a40) */
|
||||
--bs-gray-900: var(--color-10); /* Original tone: Very Dark Gray (#212529) */
|
||||
--bs-primary: var(--color-65); /* Original tone: Blue (#0d6efd) */
|
||||
--bs-light: var(--color-95); /* Original tone: Light (#f8f9fa) */
|
||||
--bs-dark: var(--color-10); /* Original tone: Dark (#212529) */
|
||||
--bs-primary-rgb: var(--color-rgb-65); /* Original tone: Blue (13, 110, 253) */
|
||||
--bs-secondary-rgb: var(--color-rgb-50); /* Original tone: Grayish (#6c757d / 108, 117, 125) */
|
||||
--bs-light-rgb: var(--color-rgb-95); /* Original tone: Light (248, 249, 250) */
|
||||
--bs-dark-rgb: var(--color-rgb-10); /* Original tone: Dark (33, 37, 41) */
|
||||
--bs-white-rgb: var(--color-rgb-99); /* Original tone: White (255, 255, 255) */
|
||||
--bs-black-rgb: var(--color-rgb-01); /* Original tone: Black (0, 0, 0) */
|
||||
--bs-body-color-rgb: var(--color-rgb-10); /* Original tone: Dark (#212529 / 33, 37, 41) */
|
||||
--bs-body-bg-rgb: var(--color-rgb-99); /* Original tone: White (#fff / 255, 255, 255) */
|
||||
--bs-body-color: var(--color-10); /* Original tone: Dark (#212529) */
|
||||
--bs-body-bg: var(--color-99); /* Original tone: White (#fff) */
|
||||
--bs-border-color: var(--color-85); /* Original tone: Gray (#dee2e6) */
|
||||
--bs-link-color: var(--color-65); /* Original tone: Blue (#0d6efd) */
|
||||
--bs-link-hover-color: var(--color-60); /* Original tone: Darker Blue (#0a58ca) */
|
||||
--bs-code-color: var(--color-55); /* Original tone: Pink (#d63384) */
|
||||
--bs-highlight-bg: var(--color-93); /* Original tone: Light Yellow (#fff3cd) */
|
||||
--bs-list-group-bg: var(--color-40);
|
||||
--bs-emphasis-color: var(--color-01); /* Gemappt von #000 */
|
||||
--bs-emphasis-color-rgb: var(--color-rgb-01); /* Gemappt von 0, 0, 0 */
|
||||
--bs-secondary-color: rgba(var(--color-rgb-10), 0.75); /* Gemappt von rgba(33, 37, 41, 0.75) */
|
||||
--bs-secondary-color-rgb: var(--color-rgb-10); /* Gemappt von 33, 37, 41 */
|
||||
--bs-secondary-bg: var(--color-90); /* Gemappt von #e9ecef */
|
||||
--bs-secondary-bg-rgb: var(--color-rgb-90); /* Gemappt von 233, 236, 239 */
|
||||
--bs-tertiary-color: rgba(var(--color-rgb-10), 0.5); /* Gemappt von rgba(33, 37, 41, 0.5) */
|
||||
--bs-tertiary-color-rgb: var(--color-rgb-10); /* Gemappt von 33, 37, 41 */
|
||||
--bs-tertiary-bg: var(--color-95); /* Gemappt von #f8f9fa */
|
||||
--bs-tertiary-bg-rgb: var(--color-rgb-95); /* Gemappt von 248, 249, 250 */
|
||||
--bs-link-color-rgb: var(--color-rgb-65); /* Gemappt von 13, 110, 253 */
|
||||
--bs-link-hover-color-rgb: var(--color-rgb-60); /* Gemappt von 10, 88, 202 */
|
||||
--bs-highlight-color: var(--color-10); /* Gemappt von #212529 */
|
||||
--bs-border-color-translucent: rgba(var(--color-rgb-01), 0.175); /* Gemappt von rgba(0, 0, 0, 0.175) */
|
||||
--bs-focus-ring-color: rgba(var(--color-rgb-65), 0.25); /* Gemappt von rgba(13, 110, 253, 0.25) */
|
||||
--bs-black: var(--color-01); /* Original tone: Black (#000) */
|
||||
--bs-white: var(--color-99); /* Original tone: White (#fff) */
|
||||
--bs-gray: var(--color-50); /* Original tone: Gray (#6c757d) */
|
||||
--bs-gray-dark: var(--color-20); /* Original tone: Dark Gray (#343a40) */
|
||||
--bs-gray-100: var(--color-95); /* Original tone: Very Light Gray (#f8f9fa) */
|
||||
--bs-gray-200: var(--color-90); /* Original tone: Lighter Gray (#e9ecef) */
|
||||
--bs-gray-300: var(--color-85); /* Original tone: Light Gray (#dee2e6) */
|
||||
--bs-gray-400: var(--color-80); /* Original tone: Gray (#ced4da) */
|
||||
--bs-gray-500: var(--color-70); /* Original tone: Medium Gray (#adb5bd) */
|
||||
--bs-gray-600: var(--color-50); /* Original tone: Gray (#6c757d) */
|
||||
--bs-gray-700: var(--color-40); /* Original tone: Darker Gray (#495057) */
|
||||
--bs-gray-800: var(--color-20); /* Original tone: Dark Gray (#343a40) */
|
||||
--bs-gray-900: var(--color-10); /* Original tone: Very Dark Gray (#212529) */
|
||||
--bs-primary: var(--color-65); /* Original tone: Blue (#0d6efd) */
|
||||
--bs-light: var(--color-95); /* Original tone: Light (#f8f9fa) */
|
||||
--bs-dark: var(--color-10); /* Original tone: Dark (#212529) */
|
||||
--bs-primary-rgb: var(--color-rgb-65); /* Original tone: Blue (13, 110, 253) */
|
||||
--bs-secondary-rgb: var(--color-rgb-50); /* Original tone: Grayish (#6c757d / 108, 117, 125) */
|
||||
--bs-light-rgb: var(--color-rgb-95); /* Original tone: Light (248, 249, 250) */
|
||||
--bs-dark-rgb: var(--color-rgb-10); /* Original tone: Dark (33, 37, 41) */
|
||||
--bs-white-rgb: var(--color-rgb-99); /* Original tone: White (255, 255, 255) */
|
||||
--bs-black-rgb: var(--color-rgb-01); /* Original tone: Black (0, 0, 0) */
|
||||
--bs-body-color-rgb: var(--color-rgb-10); /* Original tone: Dark (#212529 / 33, 37, 41) */
|
||||
--bs-body-bg-rgb: var(--color-rgb-99); /* Original tone: White (#fff / 255, 255, 255) */
|
||||
--bs-body-color: var(--color-10); /* Original tone: Dark (#212529) */
|
||||
--bs-body-bg: var(--color-99); /* Original tone: White (#fff) */
|
||||
--bs-border-color: var(--color-85); /* Original tone: Gray (#dee2e6) */
|
||||
--bs-link-color: var(--color-65); /* Original tone: Blue (#0d6efd) */
|
||||
--bs-link-hover-color: var(--color-60); /* Original tone: Darker Blue (#0a58ca) */
|
||||
--bs-code-color: var(--color-55); /* Original tone: Pink (#d63384) */
|
||||
--bs-highlight-bg: var(--color-93); /* Original tone: Light Yellow (#fff3cd) */
|
||||
--bs-list-group-bg: var(--color-40);
|
||||
}
|
||||
|
||||
|
||||
/* Discourse */
|
||||
:root section#main{
|
||||
/* Base Colors */
|
||||
@ -109,7 +93,7 @@ HINT:
|
||||
--quaternary: var(--color-50); /* originally #5e99b9 */
|
||||
|
||||
/* Header & Highlight */
|
||||
--header_background: var(--color-86); /* originally #86bddb */
|
||||
--header_background: var(--color-70); /* originally #86bddb */
|
||||
--header_primary: var(--color-20); /* same as --primary */
|
||||
--highlight: var(--color-70); /* same as header_background */
|
||||
--d-selected: var(--color-85); /* originally #bee0f2 */
|
||||
@ -942,11 +926,6 @@ html.dark-mode .listing li.selected, html.dark-mode .listing li.selected>a, html
|
||||
background-color: rgba(var(--color-rgb-82), 0.5);
|
||||
}
|
||||
|
||||
html.dark-mode .message-htmlpart {
|
||||
background-color: rgba(var(--color-rgb-99), 0.08);
|
||||
color: var(--color-15);
|
||||
}
|
||||
|
||||
/** Nextcloud specific **/
|
||||
html.ng-csp header#header{
|
||||
background-color: var(--color-80);
|
||||
@ -1047,9 +1026,4 @@ section.kanban h1, section.kanban h2{
|
||||
background: var(--color-75);
|
||||
/* New Gradient based on original background (75 -5, 75, 75 +1, 75 +5) */
|
||||
background: linear-gradient({{ range(0, 361) | random }}deg, var(--color-70), var(--color-75), var(--color-76), var(--color-80));
|
||||
}
|
||||
|
||||
/* Portfolio */
|
||||
.card-img-top i {
|
||||
filter: drop-shadow(9px 10px 9px rgba(var(--color-rgb-99), 0.9));
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user