Compare commits
11 Commits
doc-0.0.0-
...
f6718139cc
| Author | SHA1 | Date | |
|---|---|---|---|
| f6718139cc | |||
| b944048df3 | |||
| 7eb4e0761e | |||
| 1bfd8b3a96 | |||
| 020707c380 | |||
| e623ca9340 | |||
| 76e0d6b65f | |||
| b408cb0d0f | |||
| 23fe2c0863 | |||
| dd8eb9d269 | |||
| c8f95f5169 |
@@ -6,7 +6,7 @@ on:
|
||||
|
||||
jobs:
|
||||
build:
|
||||
name: Build the debian package
|
||||
name: Convert to PDF
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
@@ -18,24 +18,24 @@ jobs:
|
||||
run: git submodule update --init
|
||||
- name: "Debug"
|
||||
run: ls -la ./Defensio
|
||||
- uses: docker://git.kocoder.xyz/docker/ga-pandoc:c6eaa45b623c284e80f37434872621defc00f864
|
||||
- uses: docker://git.kocoder.xyz/docker/ga-pandoc:d2995fb914e313703da2c7754763e7fa01dae88f
|
||||
name: Pandoc
|
||||
with:
|
||||
env: TEXINPUTS=/workspace/Diplomarbeit-Absolventenverein/pm/Defensio:/workspace/Diplomarbeit-Absolventenverein/pm/Defensio/libs/awesome-beamer/:/workspace/Diplomarbeit-Absolventenverein/pm/Defensio/libs/smile/
|
||||
env: TEXINPUTS=./Defensio:./Defensio/libs/awesome-beamer/:./Defensio/libs/smile/
|
||||
command: pandoc
|
||||
args: >-
|
||||
/workspace/Diplomarbeit-Absolventenverein/pm/Defensio/01_Praesentation_Allgemein.md
|
||||
/workspace/Diplomarbeit-Absolventenverein/pm/Defensio/02_Praesentation_Konstantin_Hintermayer.md
|
||||
/workspace/Diplomarbeit-Absolventenverein/pm/Defensio/03_Praesentation_Florian_Edlmayer.md \
|
||||
/workspace/Diplomarbeit-Absolventenverein/pm/Defensio/04_Praesentation_Adam_Gaiswinkler.md \
|
||||
-t beamer \
|
||||
--template /workspace/Diplomarbeit-Absolventenverein/pm/Defensio/00_preamble.tex \
|
||||
--pdf-engine=pdflatex \
|
||||
--slide-level=2 \
|
||||
--number-sections \
|
||||
--lua-filter /workspace/Diplomarbeit-Absolventenverein/pm/_extensions/diagram/diagram.lua \
|
||||
--syntax-definition /workspace/Diplomarbeit-Absolventenverein/pm/_extensions/razor/razor.xml \
|
||||
--syntax-definition /workspace/Diplomarbeit-Absolventenverein/pm/_extensions/nginx/nginx.xml \
|
||||
/workspace/Diplomarbeit-Absolventenverein/pm/Defensio/03_Praesentation_Florian_Edlmayer.md
|
||||
/workspace/Diplomarbeit-Absolventenverein/pm/Defensio/04_Praesentation_Adam_Gaiswinkler.md
|
||||
-t beamer
|
||||
--template /workspace/Diplomarbeit-Absolventenverein/pm/Defensio/00_preamble.tex
|
||||
--pdf-engine=pdflatex
|
||||
--slide-level=2
|
||||
--number-sections
|
||||
--lua-filter /workspace/Diplomarbeit-Absolventenverein/pm/_extensions/diagram/diagram.lua
|
||||
--syntax-definition /workspace/Diplomarbeit-Absolventenverein/pm/_extensions/razor/razor.xml
|
||||
--syntax-definition /workspace/Diplomarbeit-Absolventenverein/pm/_extensions/nginx/nginx.xml
|
||||
-o defensio.pdf
|
||||
- name: "Create release"
|
||||
uses: akkuman/gitea-release-action@v1
|
||||
|
||||
1
.gitignore
vendored
1
.gitignore
vendored
@@ -1 +1,2 @@
|
||||
diplomarbeitsbuch.pdf
|
||||
defensio.pdf
|
||||
@@ -1,4 +1,4 @@
|
||||
\documentclass[aspectratio=169]{beamer}
|
||||
\documentclass[aspectratio=169,t]{beamer}
|
||||
|
||||
\providecommand{\tightlist}{%
|
||||
\setlength{\itemsep}{0pt}\setlength{\parskip}{0pt}}
|
||||
@@ -81,7 +81,7 @@
|
||||
{
|
||||
\begingroup
|
||||
\nonumberson
|
||||
\begin{frame}[noframenumbering,plain]{Agenda}
|
||||
\begin{frame}[c,noframenumbering,plain]{Agenda}
|
||||
\tableofcontents[currentsection]
|
||||
\end{frame}
|
||||
\endgroup
|
||||
@@ -93,7 +93,7 @@
|
||||
|
||||
\begingroup
|
||||
\nonumberson
|
||||
\begin{frame}[noframenumbering,plain]{Agenda}
|
||||
\begin{frame}[c,noframenumbering,plain]{Agenda}
|
||||
\tableofcontents
|
||||
\end{frame}
|
||||
\endgroup
|
||||
|
||||
@@ -39,29 +39,12 @@
|
||||
- **Problem**: Datenverlust (Hardware, Software, Cyberangriffe).
|
||||
- **Lösung**: Vollautomatisiertes Backup-Skript.
|
||||
|
||||
```mermaid
|
||||
graph LR
|
||||
Start((Start: Cronjob 02:30)) --> Init[Initialisierung]
|
||||
Init --> Vars[Konfiguration laden]
|
||||
|
||||
subgraph Sicherungsphase
|
||||
Dir[Erstelle Backup-Ordner] --> DB[Datenbank-Backup]
|
||||
DB --> Files[Dateisystem sichern]
|
||||
end
|
||||
|
||||
Files --> Check{Fehler?}
|
||||
Check -- Ja --> Mail[Log Error & Abbruch]
|
||||
Check -- Nein --> Rotate[Lade Backups-Liste]
|
||||
|
||||
subgraph Speicherverwaltung
|
||||
Rotate --> Count{Anzahl > 30?}
|
||||
Count -- Ja --> Delete[Älteste löschen]
|
||||
Count -- Nein --> Finish[Abschluss]
|
||||
Delete --> Finish
|
||||
end
|
||||
|
||||
Finish --> Ende((Ende))
|
||||
```
|
||||
**Automatischer Ablauf (täglich 02:30 Uhr):**
|
||||
1. Cronjob startet → Konfiguration wird geladen
|
||||
2. Datenbank-Backup wird erstellt
|
||||
3. Restliches Dateisystem wird komprimiert
|
||||
4. Fehlerüberprüfung → bei Fehler: Log-Eintrag & Abbruch
|
||||
5. Rotation: Nur die letzten 30 Backups bleiben erhalten, ältere werden automatisch gelöscht
|
||||
|
||||
---
|
||||
|
||||
@@ -97,22 +80,10 @@ graph LR
|
||||
|
||||
## Der Premium-Bereich (2)
|
||||
**Architektur des Premium-Bereich-Moduls:**
|
||||
```mermaid
|
||||
graph LR
|
||||
subgraph Client [WebAssembly]
|
||||
UI[Benutzeroberfläche] --> SvcC[Service Client]
|
||||
end
|
||||
|
||||
subgraph Server [ASP.NET Core]
|
||||
SvcC --> Ctrl[API Controller]
|
||||
Ctrl --> SvcS[Service Schicht]
|
||||
end
|
||||
|
||||
subgraph Data [Datenbank]
|
||||
SvcS --> EF[EF Core]
|
||||
EF --> DB[(PostgreSQL)]
|
||||
end
|
||||
```
|
||||
**Technische Architektur:**
|
||||
- **Frontend**: Blazor WebAssembly (Oqtane) → ruft API auf
|
||||
- **Backend**: ASP.NET Core Controller → Service-Schicht mit Rechteverwaltung
|
||||
- **Datenbank**: EF Core → PostgreSQL mit Audit-Trail (jede Premium-Vergabe nachvollziehbar)
|
||||
|
||||
**Datensparsame Mitgliedersuche & Kontaktfunktion:**
|
||||

|
||||
|
||||
@@ -3,17 +3,18 @@
|
||||
## Individueller Teil: Adam Gaiswinkler
|
||||
**Entwicklung von CMS‑Modulen & Frontend-Design**
|
||||
|
||||
- Schwerpunkt: Oqtane-Theme, Hall-of-Fame-Modul & Anmeldetool
|
||||
- Ziel: Moderne, responsive Website für den HTL-Absolventenverein
|
||||
|
||||
<!-- BILD: Logo HTL Ungargasse + Vereinslogo nebeneinander -->
|
||||
- **Schwerpunkt**:
|
||||
- Oqtane-Theme
|
||||
- Hall-of-Fame-Modul
|
||||
- Anmeldetool
|
||||
- **Ziel**: Moderne, responsive Website für den HTL-Absolventenverein
|
||||
|
||||
---
|
||||
|
||||
## Ausgangslage & Motivation
|
||||
- **Ausgangssituation**: Moderne Frontend‑Plattform für den Absolventenverein (responsive, neue Features).
|
||||
- **Persönliche Motivation**:
|
||||
- Team‑Verkleinerung (6 → 3) → mehr Verantwortung.
|
||||
- Team‑Verkleinerung (6 → 3) → mehr Verantwortung.
|
||||
- Projektidentifikation & Praxis‑Blazor/ASP.NET.
|
||||
- **Ziele**:
|
||||
- Oqtane‑Module (Anmeldetool, Hall‑of‑Fame).
|
||||
@@ -22,67 +23,138 @@
|
||||
---
|
||||
|
||||
## Eingesetzte Technologien
|
||||
- **Tech‑Stack**: Bootstrap + Custom‑CSS, QuestPDF, Gitea, VS 2022 wechsel zu VS Code (macOS).
|
||||
|
||||
<!-- BILD: Logos der verwendeten Tools (Bootstrap, QuestPDF, Gitea, VS Code) nebeneinander -->
|
||||
::: columns
|
||||
|
||||
:::: column
|
||||
- **Tech‑Stack**:
|
||||
- Bootstrap
|
||||
- Custom‑CSS
|
||||
- QuestPDF
|
||||
- Gitea
|
||||
- Visual Studio 2022 → Visual Studio Code (macOS).
|
||||
::::
|
||||
|
||||
:::: column
|
||||
\begin{tikzpicture}
|
||||
\node[inner sep=0pt, rounded corners=5pt, clip] {\includegraphics[width=0.8\columnwidth]{Images/Technologien.png}};
|
||||
\end{tikzpicture}
|
||||
::::
|
||||
|
||||
:::
|
||||
|
||||
---
|
||||
|
||||
## Umsetzung: Oqtane Theme
|
||||
## Oqtane Theme
|
||||
|
||||
::: columns
|
||||
|
||||
:::: column
|
||||
- Eigen‑Navigation (bootstrap Komponenten haben nicht gepasst ).
|
||||
- Systemseiten per LINQ ausblenden.
|
||||
- Responsive CSS‑Media‑Queries + reines CSS‑Burger‑Menu.
|
||||
- ControlPanel & Cookie‑Consent.
|
||||

|
||||
<!-- BILD: Screenshot der Website-Navigation auf Desktop (volle Menüleiste) -->
|
||||
<!-- BILD: Screenshot des Burger-Menüs auf Mobile (aufgeklappt) -->
|
||||
- Cookie‑Consent (erforderlich für dsgvo konformität und gesamtheit der website ).
|
||||
::::
|
||||
|
||||
:::: column
|
||||
\begin{tikzpicture}
|
||||
\node[inner sep=0pt, rounded corners=5pt, clip] {\includegraphics[width=0.55\columnwidth]{Images/BurgerMenuLiveDesign.png}};
|
||||
\end{tikzpicture}
|
||||
::::
|
||||
|
||||
:::
|
||||
|
||||
---
|
||||
|
||||
## Umsetzung: Hall of Fame
|
||||
## Hall of Fame
|
||||
|
||||
::: columns
|
||||
|
||||
:::: column
|
||||
- **Karten‑Grid**: Responsive Übersicht, Live‑Suche & Sortierung **in Echtzeit – kein Seitenreload** (Blazor).
|
||||
- **Detail‑Seite**: Glasmorphismus‑Design (halbtransparente Karten mit Blur-Effekt).
|
||||
- **Workflow**: Rich‑Text‑Editor, Bild‑Upload mit **Live-Vorschau** (max 5 MB), Status (Entwurf/Veröffentlicht) inkl. Eigentümer‑Check.
|
||||
- **PDF‑Export**: Professionelle Profil-PDFs server-seitig mit QuestPDF.
|
||||
- **Moderation**: Meldesystem über separates Interfaces‑Paket → saubere Logik-Trennung.
|
||||

|
||||

|
||||
<!-- BILD: Screenshot des Karten-Grids mit mehreren Alumni-Einträgen -->
|
||||
<!-- BILD: Screenshot der Detailseite (Glasmorphismus-Design) -->
|
||||
<!-- BILD: Screenshot eines generierten PDFs -->
|
||||
::::
|
||||
|
||||
:::: column
|
||||
\begin{tikzpicture}
|
||||
\node[inner sep=0pt, rounded corners=5pt, clip] {\includegraphics[width=0.55\columnwidth]{Images/HallOfFameBeispiel.png}};
|
||||
\end{tikzpicture}
|
||||
::::
|
||||
|
||||
:::
|
||||
|
||||
---
|
||||
|
||||
## Umsetzung: Anmeldetool
|
||||
- Klar getrennte Ja/Nein‑Buttons (grün/rot).
|
||||
- **Live‑Feedback via Blazor**: Statusänderungen sofort sichtbar – andere Teilnehmer sehen Updates direkt.
|
||||
- Mobile-optimiert: kein Overlay-Clipping, sauberes Touch-Handling.
|
||||
- Saubere Trennung: UI-Komponente & Backend-API getrennt.
|
||||
## Hall of Fame – Workflow & Export
|
||||
|
||||
<!-- BILD: Screenshot Anmeldetool mit gruenem Ja- und rotem Nein-Button -->
|
||||
<!-- BILD: Screenshot auf Mobile (Overlay-Ansicht) -->
|
||||
::: columns
|
||||
|
||||
:::: column
|
||||
- **Workflow**: Rich‑Text‑Editor, Bild‑Upload mit **Live-Vorschau** (max 5 MB), Status (Entwurf/Veröffentlicht) inkl. Eigentümer‑Check.
|
||||
- **PDF‑Export**: Professionelle Profil-PDFs server-seitig mit QuestPDF.
|
||||
- **Moderation**: Meldesystem über separates Interfaces‑Paket → saubere Logik-Trennung.
|
||||
::::
|
||||
|
||||
:::: column
|
||||
\begin{tikzpicture}[
|
||||
node distance=12mm,
|
||||
every node/.style={font=\small},
|
||||
state/.style={rectangle, rounded corners=3pt, draw=accent, fill=accent!10, minimum width=2.4cm, minimum height=8mm, align=center, font=\small\bfseries},
|
||||
arr/.style={->,>=stealth,thick,accent}
|
||||
]
|
||||
\node[coordinate] (start) {};
|
||||
\node[state, right=10mm of start] (draft) {Entwurf};
|
||||
\node[state, below=18mm of draft] (pub) {Veröffentlicht};
|
||||
\draw[arr] (start) -- node[above] {\scriptsize Erstellen} (draft);
|
||||
\draw[arr] (draft) to[out=135, in=45, looseness=4] node[above] {\scriptsize Speichern} (draft);
|
||||
\draw[arr, bend left=25] (draft) to node[right] {\scriptsize Veröffentlichen} (pub);
|
||||
\draw[arr, bend left=25] (pub) to node[left] {\scriptsize Zurückziehen} (draft);
|
||||
\end{tikzpicture}
|
||||
::::
|
||||
|
||||
:::
|
||||
|
||||
---
|
||||
|
||||
## Anmeldetool
|
||||
- **UI**: Ja/Nein‑Buttons (grün/rot)
|
||||
- **Live‑Feedback**: Sofortige Statusänderung via Blazor
|
||||
- **Mobile**: Sauberes Touch-Handling
|
||||
- **Architektur**: UI & Backend-API getrennt
|
||||
|
||||
---
|
||||
|
||||
## Herausforderungen & Lösungen
|
||||
- **Plattformwechsel** Windows → macOS: Oqtane stark an Windows gebunden → **Visual Studio Code** als plattformübergreifende Lösung.
|
||||
- **Hosting-Ausfall** (Hetzner, Sommer 2025): kurz vor einem Event → schnelle **Node.js/HTML-Übergangslösung** sicherte Event-Anmeldung.
|
||||
|
||||
<!-- BILD: Screenshot von Visual Studio Code auf macOS -->
|
||||
- **Plattformwechsel** Windows → macOS
|
||||
- Oqtane stark an Windows gebunden
|
||||
- → **Visual Studio Code** als plattformübergreifende Lösung
|
||||
- **Keine funktionsfähige Website** (Sommer 2025)
|
||||
- Kurz vor einem Event, kein funktionierendes CMS
|
||||
- → Schnelle **Node.js/HTML-Übergangslösung** sicherte Event-Anmeldung
|
||||
|
||||
---
|
||||
|
||||
## Learnings
|
||||
- **Technisch**: Git, CSS‑Flexbox, Blazor.
|
||||
- **Methodisch**: Aufgabenverteilung, regelmäßige Meetings.
|
||||
- **Persönlich**: Eigeninitiative & Verantwortung.
|
||||
|
||||
\vspace{1cm}
|
||||
\begin{tikzpicture}[remember picture, overlay]
|
||||
\node at (current page.center) {
|
||||
\renewcommand{\arraystretch}{1.5}
|
||||
\begin{tabular}{c c c}
|
||||
\textbf{Technisch} & \textbf{Methodisch} & \textbf{Persönlich} \\
|
||||
\hline
|
||||
Git & Aufgabenverteilung & Eigeninitiative \\
|
||||
CSS-Flexbox & Regelmäßige Meetings & Verantwortung \\
|
||||
Blazor & & \\
|
||||
\end{tabular}
|
||||
};
|
||||
\end{tikzpicture}
|
||||
|
||||
---
|
||||
|
||||
## Fazit & Ausblick
|
||||
- Theme final, mobil, Hall of Fame & Anmeldetool funktionsfähig.
|
||||
- **Erweiterungen**: Teilnehmer‑Auswertung, Anmelde‑Limit, automatische E‑Mail‑Erinnerungen.
|
||||
|
||||
<!-- BILD: Gesamtansicht der fertigen Website (Desktop) als Abschluss-Screenshot -->
|
||||
|
||||
- **Ergebnis**:
|
||||
- Theme final & mobil-optimiert
|
||||
- Hall of Fame funktionsfähig
|
||||
- Anmeldetool einsatzbereit
|
||||
|
||||
|
||||
BIN
Defensio/Images/BurgerMenuLiveDesign.png
Normal file
BIN
Defensio/Images/BurgerMenuLiveDesign.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 40 KiB |
BIN
Defensio/Images/Technologien.png
Normal file
BIN
Defensio/Images/Technologien.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 36 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 27 KiB |
Submodule Defensio/libs/awesome-beamer updated: e282972eb1...07dd6473c5
3
Defensio/puppeteer-config.json
Normal file
3
Defensio/puppeteer-config.json
Normal file
@@ -0,0 +1,3 @@
|
||||
{
|
||||
"args": ["--no-sandbox"]
|
||||
}
|
||||
@@ -1,11 +1,9 @@
|
||||
# Video Text Skript
|
||||
|
||||
Anfang: Willkommen zu unserem Video über den AlumniHub. Wir sind Konstantin Hintermayer, Florian Edlmayer und Adam Gaiswinkler und wir haben im Rahmen unserer Diplomarbeit an der HTL SZU Ungargasse eine moderne Webanwendung für den Absolventenverein entwickelt.
|
||||
Anfang: Vernetzung, die wirklich funktioniert – willkommen beim AlumniHub. Wir haben im Rahmen unserer Diplomarbeit an unserer HTL eine moderne Webanwendung für den Absolventenverein entwickelt.
|
||||
Zu beginn unseres Projekts sind wir auf viele Probleme gestoßen. Im Sommer beschäftigten wir uns mit einer Übergangslösung um das kommende Treffen der Absolventen im Jahr 2025 zu ermöglichen. Ein weiteres Problem war unser Team Downsizing von 6 auf 3 Mitglieder. Dadurch mussten wir unsere ursprünglichen Pläne stark überdenken und uns auf das Wesentliche konzentrieren.
|
||||
Außerdem sind wir immer wieder auf Probleme mit unserer Serverinfrastruktur gestoßen.
|
||||
|
||||
Ein zentraler Teil unserer Arbeit ist die kontinuierliche Integration unserer Software. Wir haben uns für Git als Versionsverwaltungssystem entschieden und hosten eine Gitea Instanz. Bei veröffentlichen eines tags wird automatisch ein neues Debian Paket gebaut und in unsererem Debian Package Registry bereitgestellt.Durch diese automatisierung ist die veröffentlichung von neuen Softwareversionen stark vereinfacht worden.
|
||||
|
||||
Das Hauptziel des Projektes war es eine moderne Webanwendung für den Absolvenntenverein zu kreieren. Die es ermöglicht einfach Events und treffen zu organisieren mithilfe unseres EventRegistration Moduls. Weiter Funktionen sind die Hall of Fame, wo Absolventen ihre Erfolge präsentieren können, das Schwarze Brett für Neuigkeiten und Jobangebote und der Premiumbereich für exklusive Inhalte. Diese sind im Laufe der Entwicklung hinzugekommen.
|
||||
|
||||
Nun wollen wir Ihnen unsere Webanwendung genauer vorstellen.
|
||||
@@ -20,3 +18,6 @@ Schwarzes Brett Modul:
|
||||
|
||||
|
||||
Premiumbereich Modul:
|
||||
|
||||
|
||||
Ein zentraler Teil unserer Arbeit ist die kontinuierliche Integration unserer Software. Wir haben uns für Git als Versionsverwaltungssystem entschieden und hosten eine Gitea Instanz. Bei veröffentlichen eines tags wird automatisch ein neues Debian Paket gebaut und in unsererem Debian Package Registry bereitgestellt.Durch diese automatisierung ist die veröffentlichung von neuen Softwareversionen stark vereinfacht worden.
|
||||
@@ -151,6 +151,11 @@ local mermaid = {
|
||||
compile = function (self, code)
|
||||
local mime_type = self.mime_type or 'image/svg+xml'
|
||||
local file_extension = extension_for_mimetype[mime_type]
|
||||
|
||||
-- Resolve puppeteer config path
|
||||
local puppeteer_config = pandoc.path.join({pandoc.system.get_working_directory(), 'puppeteer-config.json'})
|
||||
|
||||
|
||||
return with_temporary_directory("diagram", function (tmpdir)
|
||||
return with_working_directory(tmpdir, function ()
|
||||
local infile = 'diagram.mmd'
|
||||
@@ -158,7 +163,7 @@ local mermaid = {
|
||||
write_file(infile, code)
|
||||
pipe(
|
||||
self.execpath or 'mmdc',
|
||||
{"--pdfFit", "--iconPacksNamesAndUrls", "mdi#https://unpkg.com/@iconify-json/mdi@1.2.3/icons.json", "--input", infile, "--output", outfile},
|
||||
{"--pdfFit", "--iconPacksNamesAndUrls", "mdi#https://unpkg.com/@iconify-json/mdi@1.2.3/icons.json", "-p", puppeteer_config, "--input", infile, "--output", outfile},
|
||||
''
|
||||
)
|
||||
return read_file(outfile), mime_type
|
||||
@@ -167,6 +172,24 @@ local mermaid = {
|
||||
end,
|
||||
}
|
||||
|
||||
-- Source - https://stackoverflow.com/a/27028488
|
||||
-- Posted by hookenz, modified by community. See post 'Timeline' for change history
|
||||
-- Retrieved 2026-04-18, License - CC BY-SA 4.0
|
||||
|
||||
function dump(o)
|
||||
if type(o) == 'table' then
|
||||
local s = '{ '
|
||||
for k,v in pairs(o) do
|
||||
if type(k) ~= 'number' then k = '"'..k..'"' end
|
||||
s = s .. '['..k..'] = ' .. dump(v) .. ','
|
||||
end
|
||||
return s .. '} '
|
||||
else
|
||||
return tostring(o)
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
--- TikZ
|
||||
--
|
||||
|
||||
|
||||
3
puppeteer-config.json
Normal file
3
puppeteer-config.json
Normal file
@@ -0,0 +1,3 @@
|
||||
{
|
||||
"args": ["--no-sandbox"]
|
||||
}
|
||||
Reference in New Issue
Block a user