diff --git a/docs/src/content/docs/features/Multi-User Mode/admin-guide.mdx b/docs/src/content/docs/features/Multi-User Mode/admin-guide.mdx index bcef946fb3c..03222a57e3c 100644 --- a/docs/src/content/docs/features/Multi-User Mode/admin-guide.mdx +++ b/docs/src/content/docs/features/Multi-User Mode/admin-guide.mdx @@ -218,6 +218,34 @@ view the models previously installed, but cannot add or modify them. ## Security +### Download URL Restrictions + +These restrictions apply to every download the server performs on your behalf — +model installs from URLs are the main case. (The old general-purpose +`/api/v1/download_queue` REST endpoint, which accepted an arbitrary URL and +destination path, has been removed.) + +Downloads are refused when the URL resolves to a loopback, link-local or +private-network address. This stops a download URL from being used to reach +services that only the server can see, such as an admin interface bound to +`127.0.0.1` or a cloud instance-metadata endpoint. Redirects are checked at +every hop, so a public URL cannot bounce the server onto a private address. + +If you install models from a mirror on your own network, re-enable those +addresses in `invokeai.yaml`: + +```yaml +allow_private_download_urls: true +``` + +For security, the guarded downloader ignores ambient `HTTP_PROXY`, `HTTPS_PROXY`, +and `ALL_PROXY` settings. It still honors `REQUESTS_CA_BUNDLE`, `CURL_CA_BUNDLE`, +and `.netrc`. If direct outbound access is unavailable, set `download_proxy` to an +explicit proxy whose destination policy blocks private addresses; proxy-side DNS +cannot be checked by InvokeAI. Do not enable `allow_private_download_urls` merely to +make an untrusted proxy work. The two settings are independent: `download_proxy` is +honored whether or not `allow_private_download_urls` is enabled. + :::note[Strict Password Checking] It is recommended that you enable strict password checking. This will force all users to select good passwords that follow the diff --git a/docs/src/content/docs/index.mdx b/docs/src/content/docs/index.mdx index 52de38f6faf..f9f8cc25c1b 100644 --- a/docs/src/content/docs/index.mdx +++ b/docs/src/content/docs/index.mdx @@ -118,8 +118,8 @@ Ready to unleash your creativity? Invoke is available for Windows, macOS, and Li --- -:::note[About the Hosted Version] -The Invoke hosted platform has been shut down as the founding team joined Adobe. However, Invoke lives on as a thriving open-source project maintained by the community. +:::note[About the former officially-hosted version] +The Invoke.ai hosted platform has been shut down as the founding team joined Adobe. However, Invoke lives on as a thriving open-source project maintained by the community. The open-source version offers the same powerful features you may have used in the hosted service, with the added benefit of complete control and privacy through self-hosting. diff --git a/docs/src/generated/settings.json b/docs/src/generated/settings.json index fcb47dbfb23..d07a713442c 100644 --- a/docs/src/generated/settings.json +++ b/docs/src/generated/settings.json @@ -696,6 +696,28 @@ "type": "", "validation": {} }, + { + "category": "MODEL INSTALL", + "default": false, + "description": "Allow the download queue to fetch from loopback, link-local and private-network addresses. Disabled by default so that a download URL cannot be used to reach services that are only reachable from the server. Enable this only if you install models from a mirror on your own network.", + "env_var": "INVOKEAI_ALLOW_PRIVATE_DOWNLOAD_URLS", + "literal_values": [], + "name": "allow_private_download_urls", + "required": false, + "type": "", + "validation": {} + }, + { + "category": "MODEL INSTALL", + "default": null, + "description": "Optional HTTP proxy for model downloads. The proxy must enforce the public-address policy because proxy-side DNS cannot be checked by InvokeAI.", + "env_var": "INVOKEAI_DOWNLOAD_PROXY", + "literal_values": [], + "name": "download_proxy", + "required": false, + "type": "typing.Optional[str]", + "validation": {} + }, { "category": "MODEL INSTALL", "default": false, diff --git a/docs/src/lib/components/DownloadOptions.astro b/docs/src/lib/components/DownloadOptions.astro index dfae32a4915..95124322fd9 100644 --- a/docs/src/lib/components/DownloadOptions.astro +++ b/docs/src/lib/components/DownloadOptions.astro @@ -1,5 +1,5 @@ --- -import { LinkCard, Icon, LinkButton } from '@astrojs/starlight/components'; +import { CardGrid, LinkCard, Icon, LinkButton } from '@astrojs/starlight/components'; import { type StarlightIcon } from '@astrojs/starlight/types'; import { withBase } from '../base-path'; @@ -49,6 +49,24 @@ const manualDownloadOptions = { href: withBase('/configuration/docker/', import.meta.env.BASE_URL), }, }; + +const hostedOptions = { + aibadgr: { + headline: 'Run on AI Badgr', + description: 'Run on the AI Badgr hosted GPU service', + href: 'https://aibadgr.com/gpu/launch?template=invokeai', + }, + runpod: { + headline: 'Run on RunPod', + description: 'Run on the RunPod hosted GPU service', + href: 'https://www.runpod.io/blog/invoke-ai-stable-diffusion-runpod-nfz18', + }, + railway: { + headline: 'Run on Railway', + description: 'Run on the Railway hosted GPU service', + href: 'https://railway.com/deploy/invokeai', + }, +}; ---
@@ -92,6 +110,20 @@ const manualDownloadOptions = { )) }
+ + +
+

Hosted Options

+

For users who want to run Invoke on a hosted GPU service instead of their own hardware.

+ + + { + Object.entries(hostedOptions).map(([key, { headline, href, description }]) => ( + + )) + } + +