diff --git a/.env-example b/.env-example index c3f5205..1ddac07 100644 --- a/.env-example +++ b/.env-example @@ -1,3 +1,4 @@ +BROWSER_TRUSTED="false" DISCORD_NOTIFY_GROUP="@here" DISCORD_WEB_HOOK="https://discordapp.com/api/webhooks/23123123123/5dfsdfh3h2j5hdfhsdfsdhj55jf" EMAIL_USERNAME="youremail@gmail.com" diff --git a/README.md b/README.md index dc8bb0b..af50648 100644 --- a/README.md +++ b/README.md @@ -62,6 +62,7 @@ Here is a list of variables that you can use to customize your newly copied `.en | **Environment variable** | **Description** | **Notes** | |:---:|---|---| +| `BROWSER_TRUSTED` | Skip Chromium Sandbox | Useful for containerized environments, default: `false` | | `DESKTOP_NOTIFICATIONS` | Display desktop notifications using [node-notifier](https://www.npmjs.com/package/node-notifier); optional | Default: `false` | | `DISCORD_NOTIFY_GROUP` | Discord group you would like to notify; optional | E.g.: @here | | `DISCORD_WEB_HOOK` | Discord Web Hook URL | diff --git a/src/config.ts b/src/config.ts index f1cc6c5..46b0300 100644 --- a/src/config.ts +++ b/src/config.ts @@ -5,6 +5,7 @@ config({path: path.resolve(__dirname, '../.env')}); const browser = { isHeadless: process.env.HEADLESS ? process.env.HEADLESS === 'true' : true, + isTrusted: process.env.BROWSER_TRUSTED ? process.env.BROWSER_TRUSTED === 'true' : false, maxSleep: Number(process.env.PAGE_SLEEP_MAX ?? 10000), minSleep: Number(process.env.PAGE_SLEEP_MIN ?? 5000), open: process.env.OPEN_BROWSER === 'true' diff --git a/src/index.ts b/src/index.ts index fa6b4e1..e2066c2 100644 --- a/src/index.ts +++ b/src/index.ts @@ -14,7 +14,17 @@ puppeteer.use(adBlocker); * Starts the bot. */ async function main() { + const args: string[] = []; + + // Skip Chromium Linux Sandbox + // https://github.com/puppeteer/puppeteer/blob/main/docs/troubleshooting.md#setting-up-chrome-linux-sandbox + if (Config.browser.isTrusted) { + args.push('--no-sandbox'); + args.push('--disable-setuid-sandbox'); + } + const browser = await puppeteer.launch({ + args, defaultViewport: { height: Config.page.height, width: Config.page.width