Existing Umbraco installation fails after installing Articulate blog (or anything that schedules posts)

2017-04-06 13:42:45,673 [P3048/D15/T45] ERROR Umbraco.Web.Scheduling.KeepAlive – Failed (at “http://(domain)/umbraco”).
System.Threading.Tasks.TaskCanceledException: A task was canceled.
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at Umbraco.Web.Scheduling.KeepAlive.<PerformRunAsync>d__4.MoveNext()

This may be related to: http://issues.umbraco.org/issue/U4-5965 :

“Create config to explicitly set the ‘base url’ for a website that is not running as a load balanced site – used for scheduled tasks/publishing/keepalive”

Setting umbracoApplicationUrl=”https://(domain name)/Umbraco” in Config/umbracoSettings.config …and restarting the application pool and the website has fixed the problem; the site is responsive once more and the required  nodes have been published:
2017-04-06 14:15:00,997 [P3460/D2/T30] INFO Umbraco.Core.Publishing.PublishingStrategy – Content ‘Blog’ with Id ‘3316’ has been published.
2017-04-06 14:15:01,544 [P3460/D2/T30] INFO Umbraco.Core.Publishing.PublishingStrategy – Content ‘Archive’ with Id ‘3317’ has been published.
2017-04-06 14:15:01,638 [P3460/D2/T30] INFO Umbraco.Core.Publishing.PublishingStrategy – Content ‘Test post’ with Id ‘3320’ has been published.
2017-04-06 14:15:01,716 [P3460/D2/T30] INFO Umbraco.Core.Publishing.PublishingStrategy – Content ‘Authors’ with Id ‘3318’ has been published.
2017-04-06 14:15:01,779 [P3460/D2/T30] INFO Umbraco.Core.Publishing.PublishingStrategy – Content ‘Demo author’ with Id ‘3319’ has been published.

 

 

LetsEncrypt with Umbraco – serving static, extensionless URLs within an Umbraco installation.

Situation; you have a bunch of domains and subdomains which are secured using Letsencrypt. by default, Letsencrypt will try to put a static, extensionless file like named e.g.  “jCk1zSkjsiuJHrmnSFnxdvkhkjnnNNkjsaaRo” in a “/.well-known/acme-challenge/” subfolder of the site root.

If that file isn’t reachable and browsable – the Letsencrypt acme servers won’t authenticate your domain. Letsencrypt will warn you at this point and recommend re-ordering the IIS Handler Mappings to promote the “StaticFile” handler above the three “ExtensionlessUrl” handlers.

However even if you reorder the handlers, you’ll still see a 404-page not found error when browsing directly to the static file’s URL e.g. http://yourdomain/.well-known/acme-challenge/jCk1zSkjsiuJHrmnSFnxdvkhkjnnNNkjsaaRo

If you check the logs in your Umbraco /App_Data/Logs directory, you may see “Status code is 404 yet TrySkipIisCustomErrors is false – IIS will take over”

IIS won’t log anything useful though.

What’s happening can only be seen once you tell Umbraco not to pass error handling onto IIS; so edit /Config/umbracoSettings.config and set trySkipIisCustomErrors=true

This will force Umbraco to print its own, more informative error, confirming the problem:

No umbraco document matches the url ‘/.well-known/acme-challenge/jCk1zSkjsiuJHrmnSFnxdvkhkjnnNNkjsaaRo’

Finally; to fix the problem and exclude the /.well-known/acme-challenge/ directory from Umbraco’s control, you need to edit Umbraco’s main Web.config file, and add the following:

<add key=”umbracoReservedPaths” value=”~/umbraco,~/install/,~/.well-known/,~/.well-known/acme-challenge/” />

The next time you load http://yourdomain/.well-known/acme-challenge/jCk1zSkjsiuJHrmnSFnxdvkhkjnnNNkjsaaRo in a browser, you should see a plain-text string of json that the acme server needs to authenticate your control of the domain for which you’re requesting the certificate.

Retrying the Letsencrypt client at this point should be successful.

Have a coffee and don’t forget to revert the logging and error handling changes you just made.

 

Umbraco fails to update log in App_Data/Logs directory – IIS 8.x – Fixed

Umbraco logs a great deal of helpful debugging information to its /App_Data/Logs subdirectory. If the log files aren’t present or haven’t been added to since a server migration, check that the App Pool user has modify access to the directory tree.

If your Umbraco application is running in an Application pool named “Umbraco Blog Dev” the automatically-generated App Pool user would also be named “Umbraco Blog Dev”

If the”Umbraco Blog Dev” user is missing entirely, add it as “IIS AppPool\Umbraco Blog Dev” in the usual permissions dialogue and add modify access afterwards.

Note: the “IIS AppPool…” prefix is essential, as is the server-name Location scope; Windows won’t find the virtual user without both present.

 

Transfer Previous Recipients and Facetime contacts between macs on Mavericks and Yosemite Mail

Recovering a trashed Mail installation from an orphaned drive or just want to transfer Recents without using VCards?

The files you’ll need to copy are:
~/Library/Containers/com.apple.corerecents.recentsd/Data/Library/Recents/
Recents
Recents-shm
Recents-wal

~/Library/Containers/com.apple.corerecents.recentsd/Data/Library/Syncedpreferences/
recentsd-com.apple.mail.recents.plist

Optionally, copy the other “recents” plists as well for facetime, maps, iCal, messages etc:
recentsd-com.apple.calendar.recents.plist
recentsd-com.apple.corerecents.map-locations.plist
recentsd-com.apple.facetime.recents.plist
recentsd-com.apple.messages.recents.plist

…and finally reboot your mac to force the operating system to reload the new plists – instead of using cached copies.

 

-fix- Linux and Grub wait forever after a hypervisor ACPI shutdown.

This is a designed-in feature of grub – useful if you’ve got a physical machine in front of you, as the linux box won’t automatically restart if someone kicks the power cable out or hits the off switch – and more importantly it won’t endlessly reboot if there’s a hardware problem, slowly shredding your file systems.

If you’re running Ubuntu as a headless virtual machine in the cloud, it’s not so useful. Disable it like this:

edit /etc/default/grub and add the line:

GRUB_RECORDFAIL_TIMEOUT=3

then sudo update-grub.

Next time you accidentally “sudo ip route flush table all” on your vm and acpi-restart it,  it’ll boot properly.

 

 

 

 

Workaround -fix- for missing “import” folder after attaching archives in Mac Mail 6.x

Archive folders detached and disappeared.
Re-imported them from ~/Library/Mail/V2/Mailboxes/…

and found a nice workaround for the missing “import” folder problem you hit if you try to import nested folder hierarchies in one go:

Try to import .mbox files first – if you click on through, the import will proceed, but you’ll never see any “import” folder created.  However when you next open the import dialogue and choose “Mac Mail” instead of .mbox, you’ll be able to see the contents of the nested folders, and drill down to the individual mboxes themselves.  Import them one at a time, then drag them into a coherent archive structure once you’re done.

-fix- Android File Transfer “Can’t access Device Storage”

Open the Developer Options on your Jellybean i9300 and disable “Verify Apps by USB”

“Verify apps over usb — Allows you to disable app checks for sideloading apps over USB, while still checking apps from other sources like the browser. This can speed up the development process while keeping the security feature enabled.”

System: 10.9.2 / Foxhound 1.0 , but it should work with most other Jellybean variants.

ssh multiple identities -fix- “Too many authentication failures for { username }”

So; you regularly use ssh to connect to a few different hosts – using different private keys for each user/server combination.

Your  ~/.ssh/ directory already has a few named private keys in it – you add a couple, bring the total to 5 or more…

ls ~/.ssh/
dave_mars.id_dsa
sue_deimos.id_dsa
steve_deimos.id_dsa
irene_phobos.id_dsa
lee_phobos.id_dsa
sue_mars.id_dsa
red_deimos.id_dsa

….and try connecting:

ssh -i .ssh/sue_mars.id_dsa -l sue mars

You’re denied, with an error like:

Received disconnect from {mars' IP address} 2: Too many authentication failures for sue.

Which is confusing;  this may be the first time you’ve tried connecting to phobos with sue’s account.

Add the verbose switch to you ssh command:

ssh -v -i .ssh/sue_phobos.id_dsa -l sue phobos

You’ll see this at the end of the negotiation:

debug1: Authentications that can continue: publickey
debug1: Next authentication method: publickey
debug1: Offering RSA public key: .ssh/dave_mars.id_dsa
debug1: Authentications that can continue: publickey
 debug1: Offering RSA public key: .ssh/sue_deimos.id_dsa
debug1: Authentications that can continue: publickey
debug1: Offering RSA public key: .ssh/steve_deimos.id_dsa
debug1: Authentications that can continue: publickey
 debug1: Offering RSA public key: .ssh/irene_phobos.id_dsa
debug1: Authentications that can continue; publickey
 debug1: Offering RSA public key: .ssh/lee_phobos.id_dsa
Received disconnect from {phobos' IP address}: 2: Too many authentication failures for sue

Your local ssh agent is offering any key it can find, pre-loaded and cached from the .ssh directory (prove this caching by moving the other named keys somewhere else on your system – they’ll still be offered). The -i flag is a more of a guideline or hint to the agent.

To force the ssh client to offer only the key specified by -i, use the

-o IdentitiesOnly=yes

option:

ssh -o IdentitiesOnly=yes -i .ssh/sue_phobos.id_dsa -l sue phobos

or:

ssh -o "IdentitiesOnly yes" -i .ssh/sue_phobos.id_dsa -l sue phobos

…you’re connected.